Timer与NSTimer的使用注意:
1、由于ios是通过runLoop作为消息循环机制,主线程默认启动了runLoop,可是子线程没有默认的runLoop,因此在子线程启动runLoop即可。
2、runLoop的mode问题
如果timer是add到defaultRunLoopMode中,会出现滑动中UITrackingRunLoopMode得不到调度,导致定时器失效。
因为UITrackingRunLoopMode和KCFRunLoopDefaultMode都标记了common模式,所以可通过将timer添加到runLoopCommonModes实现在默认和追踪模式都能正常运行。
3、dealloc和定时结束时执行invalidate,置空timer。避免内存泄漏