2

NSMutableArray の -removeAllObjects、-removeLastObject などのメソッドについて話しています。ドキュメントには、これらのメソッドがオブジェクトを配列から「削除」するとのみ記載されています。除去されたオブジェクトは解放されますか?

4

2 に答える 2

6

はい、そうです。削除すると、削除された のリリースが呼び出されNSObjectます。

NSArrayクラス参照は次を指定します。

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

于 2009-09-08T03:36:19.557 に答える
2

はい、解放されます。コンテナーに配置したオブジェクトをオーバーライドすることで、含まれているオブジェクトが解放されることがわかりますrelease。スーパークラスのreleaseメソッドを呼び出して、それにブレークポイントを設定します。リリースされていることがわかります。

私は当初、オブジェクトは自動リリースされていると考えていたと述べていました。私はそれについて間違っていると信じています。

于 2009-09-08T03:36:31.097 に答える