今ではあんまり役に立たない(かも)!非ARC時のメモリリーク調査方法
なんかオブジェクトがちゃんと解放されてないなーって時ありますね。
instrumentsとか色々な調査方法があると思うけど、
今日はiOS開発を始めてから今でもたまに使う術の1つを記載したいと思う。
やり方
retainをオーバーライドしてログを出す。
- (instancetype)retain{ [super retain]; NSLog(@"Log = %@",[NSThread callStackSymbols]); }
これだけ。
意図せずBlocksで循環参照していたり、
タイマーでretainされていたりとか分かったりする。
ログが沢山出るのは、条件分岐したり、ブレークポイントに条件指定したりすればオッケー。
deallocate instanceなエラーもreleaseをオーバーライドして最後の解放の原因が掴める。
これでサクッとバグが解決出来ればラッキーですね。