答えて

0

ARCは無料ではない - 参照カウントが0

あるとき、それは増加し、参照カウントを減少させ、およびdeallocを対象ます:ところで

、ARCの詳細な説明のため、このページを読んで

手動の保持/解放と比較して、ARCは正しいでしょう。保持/解放のペアが互いに打ち消し合う時期をよく知っているため、保持/解放は頻繁に呼び出されることがあります。 Objective-Cメソッドの呼び出し(Objective-Cでは、retain/releaseをオーバーライドできますが、ARCではできません)。

+0

コンパイル時ではなく、実行時に参照カウントを増減させるのはなぜですか。 – oneofone

0

ARCは、C++のstd :: shared_ptrと同じではないにしても、オブジェクトがスコープ外に出たときにexit時間関数を呼び出す必要がある場合は参照カウントを使用します。 Obj-Cの場合、その呼び出しは解放されます。

参照カウントがどのように減少するかを管理するためにコンパイラによって追加されるリリースコール。 clangの仕組みは非常に面倒で、参照カウントを増やすすべてのメソッドへの呼び出しのためにリリースするコールのバランスが取れているかどうかをチェックする手間が省けます。

元の質問に関して、ARCはランタイムアプリケーションで追加のパフォーマンスコストを発生させるべきではありません。

あなたのアプリが記憶上の問題を抱えていると思われる場合は、あなたのアプリをインストゥルメントでプロファイリングして、どこの時間が費やされているかを確認する必要があります。

メモリの最適化はワックスのまったく異なるボールですが、ありがたいことに解決策があります。したがって、非常にスレッド化されたアプリケーションに並行メモリ割り当てに関する問題がある場合は、インテルのスレッドビルディングブロックのような優れたメモリマネージャが付属していますが、C/C++用に設計されています。 http://clang.llvm.org/docs/AutomaticReferenceCounting.html

関連する問題