2012-06-28 2 views
0

У меня есть таймер, который будет инициализирован на viewDidLoad и будет выпущен на viewDidUnload, но я нашел, что вызывающий viewDidUnload nerver вызывается, и каждый раз, когда представление представляется пользователю, вызывается viewDidLoad, поэтому у меня есть много таймеров, работающих одновременно. . Это не то, что я хочу.Когда я должен уволить таймер?

Я просто хочу остановить & освободить таймер, когда пользователь переходит от этого вида, как я могу это сделать?

ответ

4

Не инициализируйте его на виду, загрузите, вместо этого инициализируйте его в поле зрения, и его остановка исчезнет, ​​поэтому он будет остановлен, когда вы перейдете и перезапустите, как только вернетесь к этому виду.

У меня была такая же проблема, что и у вас. Это код только в случае, если вам это нужно:

- (void)viewWillAppear:(BOOL)animated{ 
[super viewWillAppear:animated]; 
NSLog(@"View will appear"); 
myTimer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(pageCycler) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer: myTimer forMode: NSDefaultRunLoopMode]; 
} 

- (void)viewWillDisappear:(BOOL)animated { 
[super viewWillDisappear:animated]; 
NSLog(@"View will dissapear"); 
[myTimer invalidate]; 
myTimer=nil; 
} 
+1

христианский ответ правильный viewwilldisapper это правильное место, чтобы отменить действие таймера и setMyTimer = ноль в viewdidunload. –

+0

Благодаря @Pandey_Laxman я забыл поставить строку: myTimer = nil; – Christian

Смежные вопросы