GCを使わないObjective-Cではretain/releaseでオブジェクトのライフサイクルを管理するわけだけど、単にキープしたいオブジェクトをretainしまくると、循環参照により解放されない(リーク)オブジェクトが発生してしまうことがあるよね。相互参照がやたら発生するのは設計上の問題のことも多いけれど、そうでないこともある。 ということで、なんらかの指針を持って「retainしないのは誰か」ということを決める必要があるんだけど、Cocoa with Loveでの記事がいい感じ。 http://cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html ルール#1から#3は図を見ればひと目、親子関係に着目したルール。#4はビューの解放について、#5は短期的にretainが必要なケースについて。迷ったときは参考に。