`po` gives `error: <EXPR>:1:1: error: use of unresolved identifier`
`po` gives `error: <EXPR>:1:1: error: use of unresolved identifier`
我在控制台中遇到 po
的问题,尝试输出函数本身有效,但输出变量或常量却不行。
正如您在这里看到的,虽然您认为 var/let 包含 bar.boy()
的内容,但 Swift 不知何故找不到它...
我敢打赌这个错误是由于 foo
在编译过程中被优化了,它的符号在编译代码中不再存在(即使它不应该在调试中,它仍然是一个 LLDB 错误)
可能如果你在下一行(甚至是 println)中添加一些 foo
的用法,它的符号将有望保留在 IR 中,你将能够 po foo
(我同意这仍然是一个错误,但至少如果它有效,你会有一个解决方法和一些解释)
所以事实证明过去可能存在一个错误,当您添加 Swift 文件时,它会 add/ask 桥接 header,但不会添加该行到您的项目
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
这意味着你将保持这种状态
导致 error: <EXPR>:1:1: error: use of unresolved identifier
!
我只能找到它,因为我在我的项目中四处移动文件,当我将 ObjC 文件添加到项目中时,它询问我桥接 header(尽管我已经有一个!)幸运的是补充说 SWIFT_OPTIMIZATION_LEVEL
。考虑到默认值为 fastest
,人们可能会认为这是一个错误,但我又猜想这只是过去的一个错误,现在已修复。
不过,我现在修复了,如果它在发布版本中添加 none
,则它可能是一个错误。我现在无法测试这个,因为为了测试这个我只有一个 Debug
构建。我会把它留作 Apple 工程师的练习:)。
我将 Swift Complier 设置为“-O”
SWIFT_OPTIMIZATION_LEVEL = "-O";
并将其设置回“-Onone”。
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
然后就可以了。
设置后修复:
Optimization Level = None[-Onone]
在 Swift 编译器下 - 代码生成
请注意 Apple LLVM 8.0 - 代码生成 下的设置 Optimization Level
无效
如果您的项目正在使用 Swift,project/target 配置中有两个单独的 "Optimization Level" 设置。它不仅 "SWIFT_OPTIMIZATION_LEVEL"。检查此 link:
我会把它留在这里以防它对某人有用。
我遇到了类似的问题,但我已经有了正确的配置,所有优化都设置为 None
。但是我仍然没有得到任何值。
经过进一步挖掘,我发现问题源于 Xcode 无法解析类型:
(lldb) frame variable self
<could not resolve type>
这让我想到了这个问题:xcode 8 Debugger 'Could not resolve type' 问题的描述和桥接 header 似乎引起了问题。
我的项目没有任何桥接 headers 我再次研究了构建设置并找到了这个设置
最初设置为 YES
。将它更改为 NO
后,符号再次起作用。
SWIFT_INSTALL_OBJC_HEADER = NO
对于那些在 Objective-c 项目中使用 Swift 框架,并想调试该项目中的 Swift 源文件的人:(在我的例子中,我有一个混合 -由 Cocoapods 管理的语言模块,我需要在我的 Objective-c 示例项目中调试 swift 模块)
在我 在我的 Objective-c 项目中添加一个空 Swift 文件后,它对我有用。
否则,那些 swift 编译器选项将不会显示在构建设置中。
我在控制台中遇到 po
的问题,尝试输出函数本身有效,但输出变量或常量却不行。
正如您在这里看到的,虽然您认为 var/let 包含 bar.boy()
的内容,但 Swift 不知何故找不到它...
我敢打赌这个错误是由于 foo
在编译过程中被优化了,它的符号在编译代码中不再存在(即使它不应该在调试中,它仍然是一个 LLDB 错误)
可能如果你在下一行(甚至是 println)中添加一些 foo
的用法,它的符号将有望保留在 IR 中,你将能够 po foo
(我同意这仍然是一个错误,但至少如果它有效,你会有一个解决方法和一些解释)
所以事实证明过去可能存在一个错误,当您添加 Swift 文件时,它会 add/ask 桥接 header,但不会添加该行到您的项目
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
这意味着你将保持这种状态
导致 error: <EXPR>:1:1: error: use of unresolved identifier
!
我只能找到它,因为我在我的项目中四处移动文件,当我将 ObjC 文件添加到项目中时,它询问我桥接 header(尽管我已经有一个!)幸运的是补充说 SWIFT_OPTIMIZATION_LEVEL
。考虑到默认值为 fastest
,人们可能会认为这是一个错误,但我又猜想这只是过去的一个错误,现在已修复。
不过,我现在修复了,如果它在发布版本中添加 none
,则它可能是一个错误。我现在无法测试这个,因为为了测试这个我只有一个 Debug
构建。我会把它留作 Apple 工程师的练习:)。
我将 Swift Complier 设置为“-O”
SWIFT_OPTIMIZATION_LEVEL = "-O";
并将其设置回“-Onone”。
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
然后就可以了。
设置后修复:
Optimization Level = None[-Onone]
在 Swift 编译器下 - 代码生成
请注意 Apple LLVM 8.0 - 代码生成 下的设置 Optimization Level
无效
如果您的项目正在使用 Swift,project/target 配置中有两个单独的 "Optimization Level" 设置。它不仅 "SWIFT_OPTIMIZATION_LEVEL"。检查此 link:
我会把它留在这里以防它对某人有用。
我遇到了类似的问题,但我已经有了正确的配置,所有优化都设置为 None
。但是我仍然没有得到任何值。
经过进一步挖掘,我发现问题源于 Xcode 无法解析类型:
(lldb) frame variable self
<could not resolve type>
这让我想到了这个问题:xcode 8 Debugger 'Could not resolve type' 问题的描述和桥接 header 似乎引起了问题。
我的项目没有任何桥接 headers 我再次研究了构建设置并找到了这个设置
最初设置为 YES
。将它更改为 NO
后,符号再次起作用。
SWIFT_INSTALL_OBJC_HEADER = NO
对于那些在 Objective-c 项目中使用 Swift 框架,并想调试该项目中的 Swift 源文件的人:(在我的例子中,我有一个混合 -由 Cocoapods 管理的语言模块,我需要在我的 Objective-c 示例项目中调试 swift 模块)
在我 在我的 Objective-c 项目中添加一个空 Swift 文件后,它对我有用。
否则,那些 swift 编译器选项将不会显示在构建设置中。