我创建了一个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。 感谢任何帮助,非常感谢。