objective-c - 我在一个线程里起了一个runloop,开启了一个timer,但我发现页面返回时不走dealloc,timer无法停止,求大神帮助
淡淡烟草味
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];
}
권장되는 작성 방법은 vc를 삭제하고 -dealloc 메서드를 호출하기 전에 먼저 [_timer 무효화];를 작성한 다음 viewWillAppear:에 _timer = nil;을 작성하는 것입니다.