计划的计时器是否会自动取消分配

时间:2015-09-26 02:59:49

标签: ios swift timer nstimer

我使用以下NSTimer类方法:

NSTimer.scheduledTimerWithTimeInterval(
 3, 
 target: self, 
 selector: Selector("setWaitThreeSecondsFalse"), 
 userInfo: nil, 
 repeats: false
)

选择器运行后返回的计时器是否被取消分配?或者我是否必须明确使计时器失效?

2 个答案:

答案 0 :(得分:2)

来自Apple文档:

  

计时器与运行循环一起使用。要有效地使用计时器,   你应该知道运行循环的运行方式 - 参见NSRunLoop和   线程编程指南。特别注意运行循环   保持对他们的计时器的强烈引用,所以你没有必要   添加后,保持自己对计时器的强引用   到一个运行循环。

由于run循环包含对NSTimer对象的字符串引用,因此必须使NSTimer无效以将其从运行循环中删除。

修改 这显然适用于重复计时器。 rmaddy指出,非重复会自动失效!

答案 1 :(得分:1)

像你一样的非重复计时器一旦发生就会自动失效。所以在这种情况下你不需要做任何事情,除非你希望在它发生之前使它无效。

来自NSTimer的文档:

  

一旦在运行循环上调度,计时器将以指定的时间间隔触发,直到它失效。非重复计时器在触发后立即自动失效。

只要您没有对计时器的强引用,它就会在无效后被取消分配。