可变类型'NSMutableDictionary'的属性具有'copy'属性;将存储不可变对象

时间:2017-09-14 06:16:52

标签: ios objective-c iphone xcode static-analysis

我正在使用Xcode9,我试图分析该项目。然后我得到了以下问题,如

  

可变类型'NSMutableDictionary'的属性具有'copy'属性;   将存储一个不可变对象

请仔细阅读图片显示分析问题

enter image description here

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

在Objective-C中,NSCopying中定义了一个复制方法,mutableCopy中定义了另一个NSMutableCopying。 NSDictionary(NSMutableDictionary的超类)符合这两种协议。

但是在属性访问器中,只有副本可用,它使用NSMutableDictionary上的复制方法来创建不可变对象,因此在运行静态分析器时会出现警告,因为您现在正在尝试存储{{1} } object into NSDictionary reference。

如果您在此引用上调用任何NSMutableDictionary方法,我认为应用程序应该崩溃。

要解决此问题,您可以使用strong来保存引用。但是,如果你真的需要一份副本(无论出于何种原因),你可以编写自己的setter,如下所示:

NSMutableDictionary