1.CADisPlayLink
系統級定時器 ,父類NSObject.他的調用頻率和裝置螢幕重新整理頻率相同。
和NSTimer一樣也需要RunLoop支援。
2.相關API
建立
+(CADisPlayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel
将計時器加入到runloop中,必須加入到runloop中才有作用
-(void)addToRunLoop:(NSRunLoop*)runloop forMode:(NSRunLoopMode)mode;
将計時器從runloop中删除
-(void)rmoveFromRunloop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
銷毀定時器
-(void)invalidate;
常用屬性
duration 兩次螢幕重新整理的時候間隔,通過此f值g可以拿到螢幕的重新整理頻率,蘋果一般是60hz(一秒60次)是個估值,
NSInteger frameInterval 多少次螢幕重新整理後才調用一次方法 10以後被廢棄,預設重新整理一次調用一次
timestamp 螢幕顯示的上一幀的時間戳,是CoreAnimation使用的時間格式
targetTimestamp 螢幕顯示的下一幀時間戳
paused 是否暫停計時器
preferredFramesPerSecond 一秒内執行多次方法 預設60
demo
CADisplayLink *disLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(test)];
[disLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
//每秒鐘調用多次 預設60.
disLink.preferredFramesPerSecond = 10;
//是否暫停
disLink.paused = NO;
-(void)test{
NSLog(@"測試");
}