我想确保理解属性的关键概念和类的实例变量所有权,在本例中使用NSArray。
假设我将对NSArray
的引用传递给另一个类,并将该类的iVar设置为它。例如:
第一项技术
OtherClass.h
@property (nonatomic, retain) NSArray * otherClassArray;
然后:
CurrentClass.m
otherclass.otherClassArray=myArray
现在,即使OtherClass
保留myArray
,如果CurrentClass
更改myArray
,那么otherclass.otherClassArray
也会更改,更正吗?
所以,这是更好的方法吗,或者我错了,上面的内容会做我对以下的期望:
第二种技术
CurrentClass.m
otherclass.otherClassArray=[NSArray arrayWithArray:myArray]
现在有一个不同的副本,所以对myArray
的任何更改都不会对otherClassArray
产生任何影响,我是对的,还是这两种方法都做同样的事情?
更新:为什么我应该使用或不应该使用上述第二种技术与使用copy
属性相比?看起来这两种技术都会导致我的班级拥有一个新的NSArray。