NSTimer解决循环引用
@interface SecendViewController ()
@property (nonatomic,strong) NSTimer *timer;
@end
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerrun) userInfo:nil repeats:YES];
- (void)timerrun{
NSLog(@"开始跑定时器---");
}
- (void)dealloc{
NSLog(@"dealloc");
}
这种写法 页面返回时,发现页面的dealloc没有调用,这是因为timer和VC相互调用没有被释放,那timer应该怎么释放?
[self.timer invalidate];
使用这个方法,这个方法应该放在哪里?直接放到dealloc中可以吗?显然是不可以的,因为dealloc方法不会调用,invalidate方法应该放在dealloc调用之前,释放之后才能调用。
可以放在
- (void)viewDidDisappear:(BOOL)animated{
NSLog(@"view did disappear");
[self.timer invalidate];
}
网友评论