きりかノート 3冊め

おあそびプログラミング

Objective-Cで循環参照を避けるためのルール

GCを使わないObjective-Cではretain/releaseでオブジェクトのライフサイクルを管理するわけだけど、単にキープしたいオブジェクトをretainしまくると、循環参照により解放されない(リーク)オブジェクトが発生してしまうことがあるよね。相互参照がやたら発生するのは設計上の問題のことも多いけれど、そうでないこともある。

ということで、なんらかの指針を持って「retainしないのは誰か」ということを決める必要があるんだけど、Cocoa with Loveでの記事がいい感じ。

ルール#1から#3は図を見ればひと目、親子関係に着目したルール。#4はビューの解放について、#5は短期的にretainが必要なケースについて。迷ったときは参考に。