这里没有太多的代码,但这个问题严重地让我烦恼!NSTimer不会失效
.H:
@interface processController : UIViewController {
NSTimer *timer;
}
@property (nonatomic, retain) NSTimer *timer;
.M:
- (void)viewDidLoad {
[super viewDidLoad];
timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector (main) userInfo:nil repeats:YES];
}
- (void)main {
NSLog(@"testing");
}
- (void)viewDidUnload {
[self.timer invalidate];
self.timer = nil;
}
奇怪的是,当我火了这样的代码:
ViewController *main = [[ViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:main animated:YES];
和切换视图时,计时器保持射击!我究竟做错了什么?
是的,值得注意的是,当你的VC被释放时,甚至不会调用viewDidUnload,它实际上*只有*当VC *仍然在*时,但是你的视图在屏幕外,然后操作系统发送低内存(或类似的情况)。根据我的经验,这只是我在导航层次结构中深入2或3层并模拟低内存。 – 2012-07-07 16:34:24
感谢@ctrahey指出我应该澄清何时调用viewDidUnload。为了更加清晰,添加了Apple对该方法的描述。 – 2012-07-07 16:43:50
此外,将所有实例-viewDidUnload和-viewDidLoad转换为-view(Will | Did)将是明智的选择:-view(Will | Did)将消失:到10月份时为止。向聪明人说话。 – 2012-07-07 17:20:05