ARCって楽だと思ったら、メモリリークしてる¶
deallocが呼ばれないので調べてみると、巡回参照が生じているらしい。IBOutletを指定したらretainしないと思ってたら、間違いだったようだ。
以下のように、__weak指定して、巡回参照を押さえてdeallocを呼ばれるようにした。
@interface RMDocument : NSDocument { NSMutableArray* employees; IBOutlet __weak NSTableView* tableView; IBOutlet __weak NSArrayController* employeeController; }
ARCの導入でコーディング量は減ったけど、考え方は変わらない。 手続き的な表記から宣言的な表記に変わったと理解して@interfaceを書く時にメモリ管理を考えるようにするとよいのかもしれない。
もう一度、@synthesizeとか@propetyの書き方を調べ直さないとダメだな。
Comments
comments powered by Disqus