自動参照カウンターはiOSでどのように機能しますか?実際、このトピックは、手動参照カウンターに慣れた後、理解しやすくなりました。これは、iOSでメモリ管理がどのように機能するかを基本的に理解するのに役立つ非常に簡単な記事です。
iOSのメモリ管理にはいくつかのツールがあります。
MRC-手動リファレンスカウンター
MRCは、コードによる手動リンク管理です。初期および先史時代には、開発者自身がチームを通じて参照カウントを管理していました。控えめに言っても、大変でした。
alloc-オブジェクトの作成(リンクの作成)
保持-それへの参照(リンクへの+1)
リリース-参照カウントをデクリメントします(-1)
Dealloc-参照カウントが0の場合=メモリからアンロード
基本的に、オブジェクトを割り当て、ある時点で保存してから、送信する割り当て/保存ごとに1つのリリースを送信します。オブジェクトがメモリから削除されると、deallocメソッドがオブジェクトに対して呼び出されます。
問題:
あなたは常に保持、解放を数える必要があります
アンロードされたメモリからアクセスするとクラッシュする
リリースを置くのを忘れた-メモリリーク
ARC-自動参照カウンター
, , , - iOS . . ARC . . , ARC , .
?
(release/retain - ) dealloc -
properties change - weak/strong
property :
strong - retain
weak - assign.
, ARC:
保持サイクルとは、保存サイクルのためにメモリに割り当てられたスペースの量を再利用できない場合です。Swiftは自動参照カウント(ARC)を使用するため、2つ以上のオブジェクトに相互の強い参照が含まれている場合に保存ループが発生します。その結果、これらのオブジェクトは、保存カウンターが0に減少することはなく、deinit関数が呼び出されてメモリが解放されるのを防ぐため、相互にメモリ内に保持されます。
解決策は簡単です-リンクの1つを弱くします。
この記事は、概念を簡単に理解できるように、iOSのメモリ管理の基本をより基本的かつ紹介しています。