1.不管是重复性的timer还是一次性的timer都会对它的方法的接收者进行retain,这两种timer的区别在于“一次性的timer在完成调用以后会自动将自己invalidate,而重复的timer则将永生,直到你显示的invalidate它为止”。
2.企图在dealloc中对timer进行invalidate是一种自欺欺人的做法,因为你的timer对self进行了retain,如果timer一直有效,则self的引用计数永远不会等于0
3.
_timer= [NSTimer scheduledTimerWithTimeInterval:1target:self selector:@selector(testTimer:) userInfo:nil repeats:YES];
timer都会对它的target进行retain,我们需要小心对待这个target的生命周期问题,尤其是重复性的timer。
4.timer不是一种实时的机制,会存在延迟,而且延迟的程度跟当前线程的执行情况有关。
5.runloopMode设置
6.要让timer生效,必须保证该线程的runloop已启动,而且其运行的runloopmode也要匹配。