NSTimer禁用UIView中的dealloc
|
@interface someview:UIView{
NSTimer* timer;
}
@end
@implementation someview
-(void)dealloc{
NSLog(@\"dealloc someview\");
[timer invalidate];
timer = nil;
}
-(void)runTimer{
//
}
-(void)someMethod{
timer = [NSTimer timerWithTimeInterval:2.0f target:self selector:@selector(runTimer) userInfo:nil repeats:YES];
}
@end
释放someview不会调用dealloc并且计时器继续运行。
如果我注释掉\“ timer = [NSTimer schedule .... \”部分,则将调用dealloc。这意味着我代码的所有其他部分都正常工作,而计时器是罪魁祸首。 runTimer方法为空,这意味着它只是把我弄乱了。
没有找到相关结果
已邀请:
3 个回复
郸身
坝镰补翔奋
这里唯一要记住的是,您需要确保timer不是nil对象,因为removeFromSuperview也可以从其他UIView的super dealloc方法中自动调用。您可以包装一个条件检查。
疏腔傻小雹
时才调用\'removeFromSuperview \'