Objective-C のコードを書いていると、理解しているはずなのに、ときどきわからなくなる。 そう、retain、release、autorelease の3兄弟だ。 この例はとってもシンプル。何をしたいのか理解できないが。 - (void) hoge: (id)obj { UIView *aView = [[UIView alloc] initWithFrame:CGRectZero]; [myView addSubView:aView]; [self hoge:obj]; } どうやら UIView のインスタンスを作って、myView に追加したいらしい。 だけど、このコードだと、aViewがメモリリークする。 2行目で、aViewのretainCountが1になる。 3行目で、myViewがaViewを使うことになるので、aViewのretainCountが2になる。 そして、