使计时器无效

[timer invalidate];
timer = nil;

这将停止计时器开火。**必须从创建计时器的线程中调用,**请参阅 Apple 的注释

你必须从安装了计时器的线程发送此消息。如果从另一个线程发送此消息,则可能无法从其运行循环中删除与计时器关联的输入源,这可能会阻止线程正常退出。

设置 nil 将帮助你检查它是否正在运行。

if(timer) {
    [timer invalidate];
    timer = nil;
}

//Now set a timer again.