为什么NSTimer不会因无效而停止?

时间:2016-04-21 12:22:34

标签: objective-c xcode macos cocoa nstimer

我创建了一个Cocoa应用程序。我创建了一个NSTimer,它可以工作,但无法停止使用invalidate。以下是我的代码。其他任何人都可以帮助我吗?

@implementation Document
{
  NSTimeInterval elapsedTime;
  NSTimer *timer;
}

- (IBAction)start:(id)sender
{
   elapsedTime = 0.002f;
   dispatch_async(dispatch_get_main_queue(), ^{
     if(timer == nil)
   {
    NSLog(@"Starting");
    captureFrame = [[CaptureFrame alloc] init];//captureFrame is another object
    timer = [NSTimer scheduledTimerWithTimeInterval:elapsedTime target:captureFrame selector:@selector(sendSingleImageImage) userInfo:nil repeats:YES];
    NSThread *thread = [NSThread currentThread];
    NSLog(@"Current thread is%@",thread);// I want to see the thread.
   }
  else
   {
    NSLog(@"Exist!");
    [timer invalidate];
    timer = nil;
   } 
  });
  [_stopButton setEnabled:YES];
  [_startButton setEnabled:NO];
}
- (IBAction)stop:(id)sender
{
    dispatch_async(dispatch_get_main_queue(), ^{
       [timer invalidate];
       timer = nil;
       NSThread *sthread = [NSThread currentThread];
       NSLog(@"S thread is %@",sthread);// I want to see the thread
    });
   [_startcastButton setEnabled:YES];
   [_stopButton setEnabled:NO];
   NSLog(@"Stopping");
}

我尝试使用以下方法,但没有奏效。

dispatch_async(dispatch_get_main_queue(), ^(void)block)

我还试图找出同一个线程中是否有两个动作,结果是肯定的。

所以请告诉我如何停止NSTimer。 感谢任何帮助,非常感谢。

0 个答案:

没有答案