Objective-CやSwiftはクラスのインスタンスを参照カウンタで管理する。参照回数が1以上であれば、インスタンスはメモリ上に保持される。
ARC(Automatic Reference Counting)は自動で参照カウンタを管理する仕組みである。retain及びreleaseを明示的な記述を禁止し、自動で行う。
オーナーシップはオブジェクト間の関係性を表すが、強参照と弱参照がある。
強参照は参照先のオブジェクトのオーナーシップを持ち、自分が参照を捨てるまで確実に参照可能である。new(alloc)するとインスタンスへの強参照をもつことになる。
一方、弱参照はオーナーシップをもたず、オブジェクトが破棄されると参照できない。delegateやblocksで用いることが多い。
お互いに強参照の関係にある場合、循環参照と呼ばれる。片方の参照を弱参照にすることで回避できる。
0 件のコメント:
コメントを投稿