Ios 在lldb中切换到Objective-C模式
当我在Xcode中调试Swift应用程序时,调试器需要Swift格式的表达式。如何将其切换为期望Objective-C表达式Ios 在lldb中切换到Objective-C模式,ios,lldb,Ios,Lldb,当我在Xcode中调试Swift应用程序时,调试器需要Swift格式的表达式。如何将其切换为期望Objective-C表达式 例如,我希望能够键入expr id$foo=[[SomeClass alloc]initWithBar:@“quox]”而不是Swift等价物。Swift 3.0或使用前: 您可以使用以下命令标识LLDB中所有可用语言的名称 Swift 4.0 创建类似“eco”的别名以打印objective-c对象: (lldb)command alias eco expressi
例如,我希望能够键入
expr id$foo=[[SomeClass alloc]initWithBar:@“quox]”代码>而不是Swift等价物。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/...
从WWDC 2018中可以看出,这可以通过以下命令完成:
expression -l objc -O -- [doYourStuff here]
但是这里有一件重要的事情需要注意,从Swift转换到客观的C框架创建了一个新的上下文。实际上,这意味着您可能会遇到如下错误:
error: use of undeclared identifier 'self'
为了避免这个问题,您需要在backticks`
中包含在上下文更改之前需要计算的所有变量。例如:
expression -l objc -O -- [`self` class]
这与:但是swift->objc.似乎不再有效(Xcode 9.3):(lldb)help
(linebreak)错误:''不是已知命令。
(linebreak)尝试“help”查看当前命令列表。
(linebreak)尝试“apropos”查看相关命令列表。
(linebreak)尝试“类型查找”以获取有关类型、方法、函数、模块等的信息。
Xcode 12提供了:未声明标识符“l”的使用