这个问题是好奇心之一。
我有两个预先存在的 Xcode 项目,它们会生成不同的分析器警告。我无法识别设置差异。
NSString *someNilString;
NSDictionary *someDict=@{@"hi":someNilString};
(一个更典型的例子是 someNilString 可能是也可能不是 nil - 保持简单。)
如果我在一个项目中运行分析器,我会得到
Dictionary value cannot be nil
在第二行。第二个项目中的代码相同,没有消息。一个新的 Xcode 项目(在 v6.2 中创建)生成消息,因此我相信这是(适本地)默认值。我很好奇这个设置可能在哪里。我在build设置中没有看到明显的设置。
最佳答案
可能是一个项目正在使用 ARC,而另一个项目没有。
在 ARC 下,局部变量被初始化为 nil(零)。
在手动内存管理下,局部变量包含运行时堆栈中该位置留下的任何随机值。
因此,当 Xcode 评估 someDict 行时,已知 ARC 版本为零。
关于ios - Xcode Analyzer 警告 - 字典值不能为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570285/