NSTimer循环引用

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];
}

你可能感兴趣的:(NSTimer循环引用)