Seb*_*rth 2 memory multithreading memory-management nstimer ios
在我的一个视图控制器代码中,我有这一行:
[NSTimer scheduledTimerWithTimeInterval:7.0 target:self selector:@selector(doSomethingOnce) userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)
它在7秒后被调用并执行某些操作...(我没有将计时器分配给变量或属性)
如果在7秒钟结束之前释放视图控制器,会发生什么情况?
我是否必须在某个时候释放计时器和/或使计时器无效(即在dealloc中)?
这种计时器仅由运行循环保留。由于您没有指向它的指针,因此无法invalidate。它还将保留其目标(self),因此无法self在计时器触发之前取消分配。触发后,运行循环将释放它,因此它将释放,导致释放self,并允许该对象释放(假设上面没有其他保留)。
在大多数情况下,我不建议忽略from的返回值, scheduledTimerWithTimeInterval:…因为它使您无法invalidate使用计时器。但是,如果该行为正是您想要的(有时在AppDelegate中创建的全局计时器中),那么它将在没有其他代码的情况下正常工作。
| 归档时间: |
|
| 查看次数: |
906 次 |
| 最近记录: |