我在控制台上使用
正如您在这里看到的那样,尽管您认为变量/常量包含
po
命令时,发现输出函数本身可以正常工作,但输出变量或常量则不行。正如您在这里看到的那样,尽管您认为变量/常量包含
bar.boy()
的内容,但 Swift 似乎无法找到它...事实证明,过去可能存在一个错误,当您添加Swift文件时,它会添加/要求桥接标头,但不会将该行添加到您的项目中。
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
这意味着你会停留在这种状态。
导致error: <EXPR>:1:1: error: use of unresolved identifier
!
我只能发现这是因为我在项目中移动文件时,当我向项目添加ObjC文件时,它问我关于桥接头(尽管我已经有一个!),并幸运地添加了SWIFT_OPTIMIZATION_LEVEL
。有人可以考虑将默认值视为fastest
,但反过来可能是一个bug,如果在发布版本中添加了none
。我现在无法测试这个问题,因为我只有一个Debug
构建来测试这个问题。我将把这留给苹果工程师 :)。
我将 Swift编译器 设置为"-O"
SWIFT_OPTIMIZATION_LEVEL = "-O";
并将其设置回“-Onone”。
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
然后它就可以工作了。
设置后修复:
Swift编译器 - 代码生成下的优化级别 = 无[-Onone]
请注意,在Apple LLVM 8.0 - 代码生成下设置优化级别
没有任何效果。
foo
,并且它的符号在编译后的代码中不存在(即使在调试模式下也不应该存在这种情况,这仍然是 LLDB 的一个 bug)。foo
的使用(甚至是 println),它的符号就会保留在 IR 中,然后你就可以使用 po foo
。我遇到了类似的问题,但我已经有了正确的配置,所有优化都设置为None
。但是,我仍然没有得到任何值。
经过进一步的挖掘,我发现问题源于Xcode无法解析类型:
(lldb) frame variable self
<could not resolve type>
YES
。将其更改为NO
后,符号再次正常工作。
SWIFT_INSTALL_OBJC_HEADER = NO