我如何启动和停止NSTimer?
我开发了Stop Watch应用程序。 在我的应用程序中,有两个UIButtons, StartBtn
和StopBtn
,并且还使用了NSTimer
。
现在,我想在用户点击StartBtn
时启动NSTimer
,并且在StopBtn
单击时也停止。
我知道NSTimer
被[MyTimerName invalidate];
停止[MyTimerName invalidate];
方法,但我不知道如何再次启动NSTimer
?
NSTimer
类使用起来有些尴尬; 而不是从开始/停止分离创build/销毁,它们全部汇集在一起。 换句话说,计时器一旦创build就立即启动,一旦被破坏就停下来。
因此,您需要使用NSTimer
对象的存在作为标志来指示它是否正在运行; 像这样的东西:
// Private Methods @interface MyClass () { NSTimer *_timer; } - (void)_timerFired:(NSTimer *)timer; @end @implementation MyClass - (IBAction)startTimer:(id)sender { if (!_timer) { _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(_timerFired:) userInfo:nil repeats:YES]; } } - (IBAction)stopTimer:(id)sender { if ([_timer isValid]) { [_timer invalidate]; } _timer = nil; } - (void)_timerFired:(NSTimer *)timer { NSLog(@"ping"); }
你总是可以用fire再次启动一个NStimer
[timer fire];
要阻止它:
[timer invalidate]; //remember to set timer to nil after calling invalidate; timer = nil;
你可以通过启动计时器
#define kRefreshTimeInSeconds 1 NSTimer *myTimerName; . . myTimerName = [NSTimer scheduledTimerWithTimeInterval: kRefreshTimeInSeconds target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES];
那么委托function:
-(void)handleTimer: (id) sender { //Update Values in Label here }
并停止计时器
-(void)stopTimer: (id) sender { if(myTimerName) { [myTimerName invalidate]; myTimerName = nil; } }
- 线程1:EXC_BREAKPOINT(代码= EXC_i386_BPT,子代码= 0x0)错误
- 我如何以编程方式closuresUITextView中的自动更正的popup窗口?
- 如何从Swift中的uitableviewcell类引用控制器
- 将转义的UTF8字符转换回原来的forms
- 如何完全着色UIPopoverPresentationController背景色?
- 来自AppDelegate.m的当前ViewController类名的NSLog
- 从ALAsset url iOS获取videoNSData
- SocketRocket试图安装socketrocket后,我可以让PonyDebugger工作,我得到3个苹果Match-O链接器错误
- 无法用XCode / Obj-C编译Cocoapods – “Pods-prefix.pch.dia:没有这样的文件或目录”