第52条:别忘了NSTimer会保留其目标对象

Posted CHM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第52条:别忘了NSTimer会保留其目标对象相关的知识,希望对你有一定的参考价值。

  本条要点:(作者总结)

 

 

  计时器是一种很方便也很有用的对象。Foundation 框架中有个类叫做 NSTimer,开发者可以指定绝对的日期与时间,以便到时执行任务,也可以指定执行任务的相对延时时间。计时器还可以重复运行任务,有个与之相关联的 “间隔值”(interval)可用来指定任务的触发频率。比方说,可以每 5 秒轮询某个资源。

  计时器要和 “运行循环”(run loop)相关联,运行循环到时候会触发任务。创建 NSTimer 时,可以将其“预先安排”在当前的运行循环中,也可以先创建好,然后由开发者自己来调度。无论采用哪种方式,只有把计时器放在运行循环里,它才能正常触发任务。例如,下面这个方法可以创建计时器,并将其预先安排在当前循环中:

  + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)selector userInfo:(id)userInfo repeats:(BOOL)repeats

  用此方法创建出来的计时器,会在指定的间隔时间之后执行任务。也可以令其反复执行任务,直到开发者稍后将其手动关闭为止。target 与 selector 参数表示计时器将在哪个对象上调用哪个方法。

以上是关于第52条:别忘了NSTimer会保留其目标对象的主要内容,如果未能解决你的问题,请参考以下文章

使 UIViewController 中的 NSTimer 无效以避免保留周期的最佳时间

目标 c:使用 NSTimer 对象进行内存管理

目标 C - 因保留周期而丢失

别忘了学习前端开发的友友们附带视频教程

使用crontab定时执行脚本时别忘了输出重定向;

第33条:以弱引用避免保留环