5

私はアプリを構築していますが、未使用のオブジェクトを nil に設定することは、製品レベルのコーディングでは一般的な方法なのだろうかと考えています。

これはガベージ コレクターにとって単なるヒントであり、常にオブジェクトを破棄するとは限らないことを理解しています。

4

3 に答える 3

9

このスレによると

メンバー オブジェクトの設定を使い終わった場合nil、参照先のオブジェクトがガベージ コレクションされるようになります。ローカル変数の場合、メソッド exit は同じことを行います。

そうは言っても、メンバーを明示的に に設定する必要がある場合は、設計に疑問がありますnil

于 2013-01-01T02:18:39.897 に答える
1

いいえ、それは一般的な方法ではありません。object を明示的に nil に設定するまれなケースのみがあります。

たとえば、一部のデータ構造の実装では、オブジェクトを nil に設定することが理にかなっています。キャッシュを実装し、キーを削除するメソッドを提供するとします。さらに、キャッシュが、削除されたオブジェクトへの参照を保持する配列を内部的に使用していると仮定します。次に、削除されたオブジェクトへのすべての参照を nil に設定して削除することをお勧めします。

ただし、実際には、これらの状況はそれほど頻繁には発生しません。

于 2013-01-01T02:24:02.287 に答える
0

ガベージ コレクターにヒントを与えるために何もする必要はありません。メモリ効率が十分なアルゴリズムを使用するだけで、あとは自動で処理されます。

于 2013-01-01T02:19:32.077 に答える