這裏沒有太多的代碼,但這個問題嚴重地讓我煩惱!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