現在保持されているNSArrayにあるオブジェクトでプロパティを設定する場合、ポインタ(軽量)のみを格納しますか、それともコンテンツをプロパティにコピーしますか?
私の知る限りでは、ポインタを割り当てるだけのようですが、よくわかりません。
また、どのような状況で* pointer = * otherPointerまたはsetメソッド(たとえば、setDelegate)を使用すると、ポインターがあればそれを渡すのではなく、値をコピーします。常にポインタアドレスを渡すだけではいけませんか?
現在保持されているNSArrayにあるオブジェクトでプロパティを設定する場合、ポインタ(軽量)のみを格納しますか、それともコンテンツをプロパティにコピーしますか?
私の知る限りでは、ポインタを割り当てるだけのようですが、よくわかりません。
また、どのような状況で* pointer = * otherPointerまたはsetメソッド(たとえば、setDelegate)を使用すると、ポインターがあればそれを渡すのではなく、値をコピーします。常にポインタアドレスを渡すだけではいけませんか?
あなたが言ったように、それは常にポインタを渡します。参照解除記号を具体的に追加しない限り、これは常に当てはまります。
ただし、クラスにプロパティを追加し、セッターをcopy
次のように設定すると、次のようになります。
@property (nonatomic, copy) id obj;
ドット構文またはセッターを使用する場合、これは次のように変換されます。
_obj = [otherObj copy];
NSObject
ここでは、問題のオブジェクトがそれ自体のコピーをサポートするか、それともそのスーパークラスまたは別の中間クラスのコピーにフォールバックするかによって異なります。
さらに、Collectionクラスはオブジェクトへの参照のみをコピーするため、浅いコピーNSDictionary
をNSArray
実行するため、同じオブジェクトのセットを指す2つのコレクションがあります。