当我在Xcode中调试Swift应用程序时,调试器需要Swift格式的表达式.如何将其切换为期望Objective-C表达式呢?
例如,我希望能够键入expr id $foo = [[SomeClass alloc] initWithBar:@"quux"];而不是Swift等价物.
and*_*wan 13
Swift 3.0或使用前: 您可以使用以下命令识别LLDB中所有可用语言的名称.
Swift 4.0
创建一个像"eco"这样的别名来打印objective-c对象:
(lldb)command alias eco expression -l objective-c -o --
(lldb)eco [[UIApplication sharedApplication] userHomeDirectory]
/Users/...
Run Code Online (Sandbox Code Playgroud)
从WWDC 2018 使用Xcode和LLDB进行的高级调试显示可以使用以下命令完成此操作:
expression -l objc -O -- [doYourStuff here]
Run Code Online (Sandbox Code Playgroud)
但是要注意的是,从Swift切换到Objective C框架会创建一个新上下文。实际上,这意味着您可能会遇到类似以下的错误:
error: use of undeclared identifier 'self'
Run Code Online (Sandbox Code Playgroud)
为避免此问题,您需要将所有需要在上下文更改之前求值的变量括在反引号中`。例如:
expression -l objc -O -- [`self` class]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2967 次 |
| 最近记录: |