1.NSTimer是Foundation库提供的一个类,基于runloop实现.
可以只执行一次,也可定期反复执行(设置repeat参数).其中只执行一次时,执行后自动销毁.重复执行的,必须手动调用invalidate才能销毁.
使用时应注意:
1.)必须在有runloop的线程中使用.而根据runloop的特性,如果不处于Timer的mode时,就无法响应Timer事件.
2.)创建和销毁必须在同一线程.
3.)会对要执行方法的对象,造成强引用.容易产生循环引用.
2.performSelector是NSObject实现的成员方法.
依赖于NSTimer实现,故存在跟NSTimer的问题.
提供了功能的封装,故使用起来较方便.较NSTimer比,最大的问题是不能重复执行.
3.dispatch_after是GCD层面提供的c接口.
虽不存在NSTimer的一系列问题.该接口的最大问题就是:无法Cancel.