3

私はiPhone開発者です。アプリケーションで ARC を使用しています。私はオブジェクトを割り当てています。その使用が終わったら、「nil」を割り当てます。メモリを解放するために他に何かする必要がありますか?

また、ARCでガベージコレクタを明示的に呼び出す方法はありますか? また、ARC でメモリを解放するタイミングを決定する方法はありますか?

4

2 に答える 2

8

ARC はガベージ コレクターではありません。コンパイラがユーザーに代わって参照カウント操作を追加する、手動の参照カウント管理と考えてください。

できる良いことの 1 つは、自動解放プールを作成することです。コンパイラは保持、解放、および自動解放メッセージを追加するため、オブジェクトは最終的に自動解放プールになります。検討:

@autoreleasepool {
  ..create several temporary objects...
} // << now the autorelease pool is popped, and delayed release messages are sent

自動解放プールの作成は非常に安価であり、実際にメモリ消費を抑え、オブジェクトのリソースを迅速に返すことができます。

于 2012-09-07T13:31:49.643 に答える
3

ARC にはガベージ コレクションがないため、呼び出すものはありません。オブジェクトのスコープと所有権を制御すると、ARC がメモリの使用を管理します。

参照に「nil」を割り当てるか、参照を範囲外にする以外に考慮すべきことは、オブジェクトを保持する必要があるオブジェクトへの追加の参照 (NSArray への配置など) があるかどうかだけです。 .

于 2012-09-07T13:20:27.937 に答える