第一种 : NSTimer
@property(nonatomic,strong)NSTimer *timer;
//创建定时器
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(imageChange) userInfo:nil repeats:YES];
//定时器实现方法
- (void)imageChange{
}
第二种 : GCD定时器
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
NSLog(@"这个是GCD的定时器");
if (/* DISABLES CODE */ (NO)) {
// 这个Block里一定要写这行代码,要不然定时器不会执行
dispatch_source_cancel(timer);
}
});
dispatch_resume(timer);
第三种:CADisplayLink
CADisplayLink *display= [CADisplayLink displayLinkWithTarget:self selector:@selector(updateImage)];
[display addToRunLoop:[NSRunLoopmainRunLoop] forMode:NSDefaultRunLoopMode];
说明: CADisplayLink刷帧,默认每秒刷新60次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中
网友评论