NSTimer 不会失效

NSTimer does not invalidate

我在使计时器失效时遇到了问题。

@property (nonatomic, strong) NSTimer *timer;

在我成功的块中,我正在主线程上分配和设置我的计时器:

dispatch_async(dispatch_get_main_queue(), ^{
    self.timer = [NSTimer scheduledTimerWithTimeInterval:[Config refreshInterval].integerValue target:self selector:@selector(methodThatHasABlockCalledMentionedAbove) userInfo:nil repeats:NO];
});

在我的 textFieldDidBeginEditing 中,我这样使我的计时器无效:

dispatch_async(dispatch_get_main_queue(), ^{
        [self.timer invalidate];
        self.timer = nil;
 });

我的方法仍然在计时器上执行。有什么收获?

也许您正在设置多个定时器对象而不首先使旧对象失效?!

释放已经安排好的定时器对象不会使定时器失效,所以:

在执行 self.timer = .... 之前,先调用 [self.timer invalidate];