NSTimer在单独的线程上的行为不正确

| 我正在尝试将NSTimer安排在单独的线程上,这就是我的做法。
-(void) startSpinner {
#ifdef DEBUG_MODE
    NSLog(@\"Starting Spinner...\");
#endif
    self.spinnerThread = [[[NSThread alloc] initWithTarget:self selector:@selector(scheduleSpinner) object:nil] autorelease];
    [spinnerThread start];
}

-(void) scheduleSpinner {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSTimer *_spinTimer = [NSTimer scheduledTimerWithTimeInterval:SPIN_FIRE_INTERVAL target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
    NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    [runLoop addTimer:_spinTimer forMode:NSRunLoopCommonModes];
    [runLoop addTimer:_spinTimer forMode:UITrackingRunLoopMode];
    [runLoop run];

    [pool release];
}
timerFireMethod旋转我的微调器,当按下一个按钮(停止按钮)时,我使计时器无效并退出此方法中的线程。如果按下旋转按钮,我将在此处进行轮询。 问题是,我的timerFireMethod第一次被正确调用。微调器第一次旋转。但是,当我停止旋转程序并再次启动它时,旋转程序不会旋转。日志显示第二次调用我的“ startSpinner”方法,但未调用“ timerFireMethod”方法。 更糟糕的是,微调器在模拟器上工作5-6次,在2g设备上工作1次,在最新ipod上工作4-5次。它是随机的。 这基本上如何运作?可能是什么问题呢?     
已邀请:
使您的“ 1”实例变量成为类变量。使它无效时,之后立即将其设置为
nil
。     

要回复问题请先登录注册