重複の可能性:
ARC メモリ リーク
ARC 対応プロジェクトで @autorelease プールを使用できますか。もしそうなら、@autorelease プールを使用する用途は何ですか。プロジェクトがARC対応であっても、メインスレッドのみを処理することがGoogleでわかりました。他のスレッドを作成する場合は、オブジェクトの解放に注意する必要があります。誰でも説明できますか
重複の可能性:
ARC メモリ リーク
ARC 対応プロジェクトで @autorelease プールを使用できますか。もしそうなら、@autorelease プールを使用する用途は何ですか。プロジェクトがARC対応であっても、メインスレッドのみを処理することがGoogleでわかりました。他のスレッドを作成する場合は、オブジェクトの解放に注意する必要があります。誰でも説明できますか
はい、ARC はデフォルトでメイン スレッドにのみ設定されます。ただし、バックグラウンド スレッド内で利用することもできます。解決策は簡単です。ARC では のセマンティクス@autoreleasepool { }
が異なります。実際には、従来の MRC の方法で NSAutoreleasePool オブジェクトを割り当てて解放するのではなく、ARC が呼び出されたトレッド内のオブジェクトを処理するように ARC に指示するだけで、自動解放プール スタイルの効果が得られます。
手動メモリ管理から ARC に移行する場合、次のものを置き換えます。
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release];
と
@autoreleasepool {
}
理解を深めるために、 NSAutoreleasePoolのドキュメントとAdvanced Memory Management Programming Guideをお読みください。