カスタムクラスのインスタンスの扱い

2011/10/17

Xcode4 になってから Analize が優秀で、自分のコードが間違ってたりリークの原因を察知して 教えてくれます。

例えば、カスタムクラスを viewDidLoad なんかで生成して使い回したい場合、@synthesize してやりますが、以下のコードはあまり好ましくありません。

リークの恐れのあるコード

if (self.section == nil) self.section = [[Section alloc] init];

init したインスタンスを、self で経由しているのが問題。

正しいコード

if (self.section == nil) {
        Section *_section = [[Section alloc] init];
        self.section = _section;
        [_section release];
}

と init → release と明示的にしてやるのが安全。