NSTimer会保留其目标对象

来源 ——《Effective Objective-C 2.0 》Matt Galloway

计时器是一种很方便的对象。Foundation 框架中有个类叫做NSTimer,开发者可以指定绝对的日期和时间,以便到时执行任务,也可以指定执行任务的相对延迟时间。计时器还可以重复运行任务,有个与之相关联的”间隔值”(interval)可用来指定任务的触发平绿。比方说,可以每5秒轮询某个资源。
计时器要和”运行循环”(run loop)相关联,运行循环到时候回触发任务。创建NSTimer时,可以将其预先安排在当前的运行循环中,也可以先创建好,然后由开发者自己来调度。无论采用哪种方式,只有把计时器放在运行循环里,它才能正常触发任务。例如,下面这个方法可以创建计时器,并将其预先安排在当前运行循环中:

用此方法创建出来的计时器,会在指定的间隔时间后执行任务。也可以令其反复执行任务,直到开发者稍后将其手动关闭为止。target与selector参数表示计时器将在哪个对象上调用哪个方法。计时器会保留其目标对象,等到自身失效时再释放此对象。调用invalidate方法可令计时器失效;执行完相关任务之后,一次性的计时器也会失效。开发者若将计时器设置成重复执行模式,那么必须自己调用invalidate方法,才能令其停止。 继续阅读NSTimer会保留其目标对象