sub*_*e-c 12 iphone cocoa-touch objective-c nstimer ios
我有一个NSTimer对象,如果用户点击按钮或退出视图,我需要使其无效.
所以我有:
[myNSTimer invalidate];
Run Code Online (Sandbox Code Playgroud)
在我的按钮处理程序内部viewWillDisappear.如果用户点击按钮然后存在视图,则应用程序会抛出异常,因为myNSTimer已经失效.我在该viewWillDisappear方法中需要做的是检查是否myNSTimer已经失效.我怎么做?
我试过了:
if(myNSTimer != nil)
[myNSTimer invalidate];
Run Code Online (Sandbox Code Playgroud)
但那没用.
Lil*_*ard 33
一旦你使计时器无效,只需调用release它(假设你保留了你所持有的引用),然后将你的引用取消.这样当你退出视图时,尝试第二次使计时器失效只会在nil上调用该方法,而这样做什么都不做.
或者,您可以-[NSTimer isValid]在无效之前使用它来检查它是否有效,但是在第一次无效之后,确实没有理由保留您的引用.此外,如果你真正的问题是你没有保留你的引用,所以第一个-invalidate实际上留给你一个指向释放对象的引用,那么-isValid无论如何调用都无济于事.
我通常做的是将持有计时器的成员变量清零,无论是在它触发时,还是在我使其无效时.然后你可以这样做:
[myNSTimer invalidate];
myNSTimer = nil;
Run Code Online (Sandbox Code Playgroud)
它会做正确的事情.
| 归档时间: |
|
| 查看次数: |
17804 次 |
| 最近记录: |