4

ガベージ コレクションは、AUTOZONE(LIBAUTO) を使用して目的 c で行われることを読みました。

また、OS X 10.8 まではガベージ コレクターを使用できます。勉強している間、ガベージコレクターが利用できる場合、ARCの必要性は何かを考えていました。次に、stackoverflow.com の情報源から、ARC とガベージ コレクターの違いと、両者の利点を学びました。

これで、ARC がコンパイル時に機能し、ガベージ コレクターが実行時に機能することがわかりました。また、ARC は CFType のメモリを解放できず、目的の C 型に対してのみ機能します。また、ガベージ コレクターは、ARC では実行できなかったリテイン サイクルを解放できます。

OS x 10.7 では両方とも利用できるため、ARC とガベージ コレクターの両方を一緒に使用できるかどうかを知りたいと思いました。また、ガベージ コレクターが 10.8 以降に非推奨になったのはなぜですか。ARC はガベージ コレクターの代替であり、ガベージ コレクターによって行われたすべての種類のオブジェクトを解放できます。

また、ios ではガベージ コレクターが利用できなかったため、ARC の前に ios でガベージ コレクションに使用されていたもの。手動のメモリ管理が正しく行われていれば、すべてを管理できますか? また、手動のメモリ管理が正しく行われていれば、ガベージ コレクションの必要はありませんか?

4

3 に答える 3

4

私の知る限り、両方を有効にする (簡単な) 方法はなく、とにかく意味がありません。

GC と ARC の両方が同じ目的を果たし、メモリをクリーンアップします。GC には、ARC がキャッチできないものをキャッチできるという利点がありますが、ランタイムにペナルティがあります。ARC では、正しく使用しないとメモリ リークが発生する可能性がありますが、適切に使用すると (ほとんどの場合、命名規則を順守します)、ARC には、優れたランタイム パフォーマンスによって手作業による管理の負担から解放されるという大きな利点があります。

つまり、どちらか一方を選択した場合、それらを混在させることはあまり意味がありません。GC を有効にしている場合、ARC が行っているすべての作業はほとんど役に立たないため、パフォーマンスが無駄になります。

retainところで、ARC の前は、 /を使用して手動でメモリ管理を行っていましたrelease。実際、これはまだオプションであり、今でも広く使用されています (たとえば、私は ARC に変換するのが面倒な巨大なプロジェクトに取り組んでいます)。

于 2013-11-15T08:54:42.343 に答える