找到正确的结果后如何杀死重复的计时器
Posted
技术标签:
【中文标题】找到正确的结果后如何杀死重复的计时器【英文标题】:How do you kill a repeated timer when proper results are found 【发布时间】:2011-12-25 07:51:10 【问题描述】:我在网页视图加载中有一个 NS Timer Firing,用于查找页面上的信息。然后我对页面设置复选框等进行了一些操作,这些操作引入了一些 AJAX 功能,人们可能知道这些功能不会触发 webviewloaded 方法。简而言之,我想创建一个每 5 秒检查一次的时间,以检查仅在加载正确信息时才会出现的特定部分。这很好,我可以这样做,但我不知道如何停止 NSTIMER,因为这里的所有示例都没有显示传递给函数的参数。
目前我有
[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(fcheckForEditFinished) userInfo:nil repeats:YES];
-(void) fcheckForEditFinished
//Would like to kill timer at this point.
谢谢凯文
【问题讨论】:
【参考方案1】:documentation of scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
这么说:
选择器 定时器触发时发送给target的消息。这 选择器必须具有以下签名:
- (void)timerFireMethod:(NSTimer*)theTimer
计时器将自己作为参数传递给此方法。
您可以通过发送invalidate
消息来“杀死”计时器。所以将fcheckForEditFinished
更改为fcheckForEditFinished:
,如下所示:
- (void)fcheckForEditFinished:(NSTimer *)timer
if (checkForEdit())
[timer invalidate];
定时器会自动将自己作为fcheckForEditFinished:
的参数传递。确保在对 scheduledTimerWithTimeInterval:...
的调用中也将冒号添加到选择器中。
【讨论】:
我必须在选择器中传递一些东西吗? 我不太确定你的意思,但我相信答案是否定的。 您通常不会将对象传递给方法吗?我再次来自 Windows 世界,但如果你有一个方法 -(void) myfn:(NSSTring *) mystring 并且你调用所说的方法不是 myfn(@"some string");我没有看到在这里完成 出色的帮助先生。我很珍惜时间。 附加快速问题由于未捕获的异常“NSInvalidArgumentException”,我得到 SigAboprt 终止应用程序,原因:'-[AttendanceWizardViewController fcheckForEditFinished]:无法识别的选择器发送到实例 0x68893e0'以上是关于找到正确的结果后如何杀死重复的计时器的主要内容,如果未能解决你的问题,请参考以下文章
[Unity计时器倒计时,当应用杀死Android时不起作用
如何正确计时用 Java Spring MVC 编写的 API?