web-dev-qa-db-ja.com

ARCなしの@autoreleasepool?

私はXcode 4.2を使い始めたばかりで、まだARCの速度に完全には対応していません。ただし、@ autoreleasepoolは手動での自動解放プールの使用に代わるものであり、ARCでNiceをプレイするために内部で特別な魔法をかけることは読んだことがあります。

それでも、特にARCオプションをオンにしてoffXcode 4.2で新しいプロジェクトを開始すると、テンプレートコードに@autoreleasepoolステートメントが表示されます。

ここでの取引は何ですか?

31
fieldtensor

http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool から:

@autoreleasepoolは、同等のセマンティクスで、非ARC翻訳単位で使用できます。

そして、グレッグ・パーカーは言います [1][2]

LLVM 3.0の@autoreleasepool { ... }は、展開ターゲットが十分に新しい場合、NSAutoreleasePoolよりもはるかに高速です。 ARCは不要です。 (…)常に機能しますが、OS X 10.7またはiOS 5.0の展開ターゲットの方が高速です。

したがって、@autoreleasepool ARCに関係なく、OS X v10.7 +およびiOS 5.0+ではNSAutoreleasePoolより高速です。

51
user557219