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

3
我正在使用Xcode9并尝试分析项目。然后我遇到了以下问题:

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

请查看下图以了解分析问题。

enter image description here

如何解决这个问题?

为什么你使用了 copy - Anbu.Karthik
需要“复制”吗?使用它的原因是什么? - Nirav Kotecha
检查答案 - Anbu.Karthik
1个回答

3
在Objective-C中,有一个在NSCopying中定义的copy方法和一个在NSMutableCopying中定义的mutableCopy方法。NSDictionary(NSMutableDictionary的超类)符合这两个协议。
但是,在属性访问器中,只有copy可用,它使用NSMutableDictionary上的copy方法创建一个不可变对象,因此当您尝试将NSDictionary对象存储到NSMutableDictionary引用中时会出现警告。
如果您在此引用上调用任何NSMutableDictionary方法,我认为应用程序会崩溃。
要解决此问题,您可以使用strong来代替。但是,如果您真的需要一个副本(出于任何原因),您可以编写自己的setter,类似于以下内容:
@property (nonatomic) NSMutableDictionary *parameters;

- (void)setParameters:(NSMutableDictionary *)parameters {
    _parameters = [parameters mutableCopy];
}

那么如何使用呢?您能添加一些示例吗? - Anbu.Karthik
2
感谢兄弟。 - Anbu.Karthik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接