代码之家  ›  专栏  ›  技术社区  ›  Bimawa

URL(字符串:…)返回nil时的NSURL与URL

  •  0
  • Bimawa  · 技术社区  · 4 年前

    我刚刚注意到Xcode11的奇怪行为,我在Xcode 10和Xcode 11中执行相同的代码。

    请参阅下面随附的两个版本的屏幕截图。

    我正在从String创建一个url,当我放置一个调试器并检查myUrl的值时,它显示nil,尽管在下一行它通过了nil检查,控制进入非nil状态。

    也看看控制台。

    有人已经面临过这种问题吗?或者我做错了什么。

    附言:已经清除缓存,导出数据,清理构建,重新启动Xcode。不要与断点的位置混淆,两者都是用不同的系统捕获的。

    提前感谢。

    0 回复  |  直到 5 年前
        1
  •  8
  •   Martin R    2 年前

    这是一个已知的错误,影响LLDB(Xcode调试器)和REPL。这纯粹是一个展示的问题:

    https://github.com/apple/llvm-project/issues/4477

    https://github.com/apple/llvm-project/issues/4479

    请参见:

    Instantiated optional variable shows as nil in Xcode debugger

    现在一个简单的解决方法是通过桥接的Objective C类型。该漏洞仅存在于Swift基金会的覆盖类型中。因此,在这种情况下,只需将其转换为NSURL。

    例如:

    enter image description here

    但是:

    enter image description here

    这个bug将在Xcode 12.5中修复。

        2
  •  0
  •   jalone    5 年前

    我正在使用答案,因为评论太长了,但是 会更合适。

    我目前(catalina,xcode 11.1)面临着许多类似的问题,除了调试器的总体速度减慢。

    无论如何都要确定:

    • 检查在目标构建设置中是否禁用了调试的编译时优化:优化级别-O0(var可能会被优化掉)
    • 这也解决了我的一些问题(禁用诊断使lldb更快,并解决了p/po和收集堆栈跟踪的问题): Xcode 11 extremely slow - A known problem?