ios - Xcode Analyzer 警告 - 字典值不能为 nil

标签 ios xcode nsdictionary analyzer

这个问题是好奇心之一。

我有两个预先存在的 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/

相关文章:

iOS NSDictionary 保存到 NSUserDefaults 不保存值

ios - ContainerViewController 委托(delegate)给 ChildViewController

ios - ITMS-90476 - 无效 bundle (LaunchScreen 错误)

iphone - 访问 UIImagePickerController 拍摄的图像的元数据(exif 标签)- iOS/iPhone

iphone - 从 UItableview 中删除一行时崩溃

ios - 应用程序在 ios 5.1 中工作正常,但在 ios 6 中崩溃

带有 El Capitan 的 Xcode 7 无法签署二进制文件以进行导出 - 无法按下 "allow"按钮

iphone - 包含框架时链接器错误?

ios - 将对象添加到 JSONKit 创建的字典?

objective-c - NSDictionary 和关于 "pointer from integer without a cast"的警告