15

NSArray+ を使用して作成する[NSArray arrayWithObjects:]と、それらのオブジェクトがコピーされますか? オブジェクトを配列に追加した後にオブジェクトを解放すると、問題が発生しますか?

4

1 に答える 1

35

いいえ、コピーしません。それらを保持します。はい、オブジェクトを配列に追加した後、オブジェクトを安全に解放できます。

docsは、いつものように、これを非常に明確に説明しています。

配列はその内容への強力な参照を維持します。マネージ メモリ環境では、各オブジェクトは、その ID が配列に追加される前に保持メッセージを受け取り、配列から削除されるか配列が割り当て解除されると解放メッセージを受け取ります。オブジェクト所有権のセマンティクスが異なるコレクションが必要な場合は、代わりに CFArray Reference、NSPointerArray、または NSHashTable の使用を検討してください。

于 2009-08-11T06:40:26.303 に答える