我使用以下NSTimer类方法:
NSTimer.scheduledTimerWithTimeInterval(
3,
target: self,
selector: Selector("setWaitThreeSecondsFalse"),
userInfo: nil,
repeats: false
)
选择器运行后返回的计时器是否被取消分配?或者我是否必须明确使计时器失效?
答案 0 :(得分:2)
来自Apple文档:
计时器与运行循环一起使用。要有效地使用计时器, 你应该知道运行循环的运行方式 - 参见NSRunLoop和 线程编程指南。特别注意运行循环 保持对他们的计时器的强烈引用,所以你没有必要 添加后,保持自己对计时器的强引用 到一个运行循环。
由于run循环包含对NSTimer
对象的字符串引用,因此必须使NSTimer
无效以将其从运行循环中删除。
修改强> 这显然适用于重复计时器。 rmaddy指出,非重复会自动失效!
答案 1 :(得分:1)
像你一样的非重复计时器一旦发生就会自动失效。所以在这种情况下你不需要做任何事情,除非你希望在它发生之前使它无效。
来自NSTimer
的文档:
一旦在运行循环上调度,计时器将以指定的时间间隔触发,直到它失效。非重复计时器在触发后立即自动失效。
只要您没有对计时器的强引用,它就会在无效后被取消分配。