IOSメモリ漏洩防止
613 ワード
NSTimer
:selfはtimerを持ち、timerは初期化時にselfを持ち、循環参照をもたらす.解決策はdeallocメソッド以外にinvalidateメソッドを用いてtimerを消去することである.- (void)removeFromSuperview //timer UIView
{
[timer invalidate];
timer = nil;
[super removeFromSuperview];
}
- (void)viewDidDisappear:(BOOL)animated // timer in UIViewController
{
[self.timer invalidate];
self.timer = nil;
[super viewDidDisappear:animated];
}
block
:blockでselfを使用すると、self、blockの相互所有になり、解放できません.解決策は、blockでselfの弱い参照を使用することです.__weak typeof(self) weakSelf = self;