当前位置:  开发笔记 > IOS > 正文

如何检查NSTimer是否已经失效

如何解决《如何检查NSTimer是否已经失效》经验,为你挑选了2个好方法。

我有一个NSTimer对象,如果用户点击按钮或退出视图,我需要使其无效.

所以我有:

[myNSTimer invalidate];

在我的按钮处理程序内部viewWillDisappear.如果用户点击按钮然后存在视图,则应用程序会抛出异常,因为myNSTimer已经失效.我在该viewWillDisappear方法中需要做的是检查是否myNSTimer已经失效.我怎么做?

我试过了:

if(myNSTimer != nil)
  [myNSTimer invalidate];

但那没用.



1> Lily Ballard..:

一旦你使计时器无效,只需调用release它(假设你保留了你所持有的引用),然后将你的引用取消.这样当你退出视图时,尝试第二次使计时器失效只会在nil上调用该方法,而这样做什么都不做.

或者,您可以-[NSTimer isValid]在无效之前使用它来检查它是否有效,但是在第一次无效之后,确实没有理由保留您的引用.此外,如果你真正的问题是你没有保留你的引用,所以第一个-invalidate实际上留给你一个指向释放对象的引用,那么-isValid无论如何调用都无济于事.



2> Ben Gottlieb..:

我通常做的是将持有计时器的成员变量清零,无论是在它触发时,还是在我使其无效时.然后你可以这样做:

[myNSTimer invalidate]; 
myNSTimer = nil;

它会做正确的事情.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有