クラスのプロパティとインスタンス変数の所有権の重要な概念を理解したいと思います。この場合はNSArrayを使用します。クラスは他のクラスの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
に影響しないように別個のコピーが作成されました。そういうアプローチが同じことをしているのでしょうか?
更新日:上記の私の2番目の手法を使用するべきであるか使用しない理由はありますか?copy
をプロパティに使用する理由はありますか?どちらのテクニックでも、私のクラスが所有する新しいNSArrayが生成されるようです。
私は例としてNSArrayを使用していましたが、どのような種類のクラスであったとしても、同じ問題です。私の例では、新しいクラスを作成しない限り、クラスにはオブジェクトデータのコピーはありません。 – johnbakers
別の言い方をすれば、プロパティで 'copy'を使わないことで、私の2番目の例は、別のオブジェクトデータをOtherClassに与えます。 – johnbakers
はいとはい。私が言ったように、 'copy'を使うかどうかを決定する重要な要素は、プロパティのクラスが可変サブクラスを持っているかどうかです。 –