首页 > 解决方案 > Xcode 11 调试器的奇怪行为 - 有值时将值显示为 nil

问题描述

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

请参阅以下两个版本的屏幕截图。

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

也见控制台。

有没有人已经遇到过这类问题?或者我做错了什么。

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

提前致谢。

标签: iosswiftxcodexcode10xcode11

解决方案


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

https://bugs.swift.org/plugins/servlet/mobile#issue/SR-11593

https://bugs.swift.org/plugins/servlet/mobile#issue/SR-11546

并看到:

实例化的可选变量在 Xcode 调试器中显示为 nil

目前一个简单的解决方法是通过桥接的 Objective C 类型。该错误仅适用于 Swift Foundation 覆盖类型。所以在这种情况下,只需转换为 NSURL。

例如:

在此处输入图像描述

但:

在此处输入图像描述

此错误计划在 Xcode 12.5 中修复。


推荐阅读