Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在lldb中切换到Objective-C模式_Ios_Lldb - Fatal编程技术网

Ios 在lldb中切换到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

当我在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 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”的使用