ios 字符串值在目标C中总是显示nil

wgmfuz8q  于 2023-04-08  发布在  iOS
关注(0)|答案(5)|浏览(177)

我已经升级到了Xcode 5.0。当我在调试模式下运行一个应用程序,并试图在控制台打印一个NSString值时,它给了我下面的错误。你有什么想法吗?

error: warning: couldn't get cmd pointer (substituting NULL): Couldn't load '_cmd' because its value couldn't be evaluated
Couldn't materialize struct: the variable 'stringValue' has no location, it may have been optimized out
Errored out in Execute, couldn't PrepareToExecuteJITExpression

代码如下:

NSString *stringValue = [[self.responseArray objectAtIndex:i] valueForKey:@"merchant_name"];
cgfeq70w

cgfeq70w1#

错误消息中说明了原因:* 它可能已经被优化了 *..这意味着你正在以优化的方式编译和运行你的代码。
你必须将编译器优化级别从Fastest,Smallest更改为none

  • 转到目标生成设置
  • 搜索优化级别
  • 将其更改为无(无论您处于ie调试、分发或发布的任何模式)
  • 利润

对项目设置执行相同的操作

kr98yfug

kr98yfug2#

请确保您处于调试模式,进入【编辑方案】〉【构建配置】〉【调试

1zmg4dgp

1zmg4dgp3#

您可能正在尝试在“发布方案”中进行调试。转到“产品/方案/编辑方案”并在左侧面板中选择“运行”。然后将构建配置更改为“调试”。

7vhp5slm

7vhp5slm4#

一个备选答案:您可以使用变量来阻止它被优化,而不是通过删除优化来修复“它可能已经被优化了”。
所以,在你的问题中,如果你对stringValue做了一些事情:

NSString *stringValue = [[self.responseArray objectAtIndex:i] valueForKey:@"merchant_name"]; 
NSLog(@"%@", stringValue);

stringValue将不再被优化,因为你正在使用它。
如果您想查看项目中优化出的变量的所有示例,请使用【产品】-【分析】对项目进行分析。如果您开启了编译器优化,任何“死存储”警告(其中存储了一个值,并且永远不会读取)都会在编译时被优化出。

7kqas0il

7kqas0il5#

这个错误似乎是显示给我,尽管在调试模式与0优化级别.似乎是一个LLDB问题:https://discourse.llvm.org/t/debugging-swift-is-just-awful/67866

相关问题