ARCを使用しています。私が書いたゲームの最後に実行するメソッドがあり、メモリをクリアする必要があります。には一連のオブジェクトがありNSMutableArray
、 を使用して削除しremoveObject:
ます。次に、これらのオブジェクトを に設定しますnil
。ただし、NSLog
これらのオブジェクトを使用すると、それらがまだ存在することが示されます。nil
それらをメモリから削除しないように設定するのはなぜですか?
質問する
220 次
1 に答える
1
ARC(自動参照カウント)では、オブジェクトへの参照を設定するnil
ことは、ゼロにする参照の種類に応じて2つの異なることを意味します。
それが
strong
参照である場合、それをゼロにすることは、参照されるオブジェクトの参照カウントを減らすことを意味します。参照の場合
weak
、nil-ingは何もしません。
したがって、nil-ingは異なる結果につながる可能性があります。具体的には、オブジェクトの割り当てが解除されるのは、参照カウントがゼロになったときだけです。これは、システム内の他のオブジェクトが最初のオブジェクトを所有strong
していない場合(つまり、そのオブジェクトへの参照を保持している場合)に対応します。
strong
したがって、あなたの場合、あなたがしようとしているオブジェクトへの参照を保持している他のオブジェクトが存在する可能性がありますnil
。または、弱参照をゼロにしている可能性があります。コードを表示すると、より明確になる場合があります。
于 2013-01-07T10:11:09.190 に答える