NSTimer 初始化器接受调用方法逻辑之间的间隔作为它的一个参数,预设一秒执行30次。CADisplayLink默认每秒运行60次。通过frameInterval属性改变每秒运行帧数,如设置为2,意味着CADisplayLink每隔一帧运行一次,有效的逻辑每秒30次。
此外,NSTimer接受另外一个参数是否重复,而把CADisplayLink设置为重复
直到它失效
还有一个区别在于,NSTimer一旦初始化它就开始运行,而CADisplayLink需要将显示链接添加到一个运行循环中,即用于处理系统事件的一个Cocoa Touch结构
NSTimer 我们通常会用在背景计算,更新一些数值资料,而如果牵涉到画面的更新,动画过程的演变,我们通常会用CADisplayLink。
但是要使用CADisplayLink,需要加入QuartzCore.framework及#import <QuartzCore/CADisplayLink.h>
NSTimer
@interface ViewController : UIViewController
{
NSTimer *theTimer; //声明
}
@interface ViewController : UIViewController
{
NSTimer *theTimer; //声明
}
[theTimer invalidate];theTimer=nil;
CADisplayLink
CADisplayLink,需要加入QuartzCore.framework及#import <QuartzCore/CADisplayLink.h>
/*CADisplayLink 默认每秒运行60次,将它的frameInterval属性设置为2,意味CADisplayLink每隔一帧运行一次,有效的使游戏逻辑每秒运行30次*/
if(theTimer == nil)
{
theTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(MyTask)];
theTimer.frameInterval = 2;
[theTimer addToRunLoop: [NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
//停用
[theTimer invalidate];
theTimer = nil;