我正在使用Xcode9,我试图分析该项目。然后我得到了以下问题,如
可变类型'NSMutableDictionary'的属性具有'copy'属性; 将存储一个不可变对象
请仔细阅读图片显示分析问题
如何解决此问题?
答案 0 :(得分:2)
在Objective-C中,NSCopying
中定义了一个复制方法,mutableCopy
中定义了另一个NSMutableCopying
。 NSDictionary(NSMutableDictionary的超类)符合这两种协议。
但是在属性访问器中,只有副本可用,它使用NSMutableDictionary
上的复制方法来创建不可变对象,因此在运行静态分析器时会出现警告,因为您现在正在尝试存储{{1} } object into NSDictionary
reference。
如果您在此引用上调用任何NSMutableDictionary
方法,我认为应用程序应该崩溃。
要解决此问题,您可以使用strong来保存引用。但是,如果你真的需要一份副本(无论出于何种原因),你可以编写自己的setter,如下所示:
NSMutableDictionary