objective-c - J'ai démarré une boucle d'exécution dans un thread et démarré un minuteur, mais j'ai constaté que dealloc n'était pas utilisé lorsque la page revenait et que le minuteur ne pouvait pas être arrêté. Veuillez m'aider.
淡淡烟草味
2017-05-02 09:35:06
#import "MyViewController.h"
@interface MyViewController ()
{
NSTimer *_timer;
}
@end
@implementation MyViewController
- (void)dealloc
{
[_timer invalidate];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeCountdownTime) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}
- (void)changeCountdownTime
{
// do something
}
- (void)back
{
[self.navigationController popViewControllerAnimated:YES];
}
La méthode d'écriture recommandée consiste à écrire d'abord [_timer invalidate]; puis à écrire _timer = nil; dans viewWillAppear: avant de détruire le vc et d'appeler la méthode -dealloc.