Talk is cheap.
-(void)GCDTimer
{
//首先timer变量实为类内的成员变量或者成员属性
timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0f * NSEC_PER_SEC, 0.1 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
NSLog(@"----");
});
dispatch_resume(timer);
}
-(void)CADisplayLinkMethod
{
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(timeMethod)];
//NSInteger类型的值,用来设置间隔多少帧调用一次selector方法,默认值是1,即每帧都调用一次。(1秒=60帧)
[displayLink setPreferredFramesPerSecond:120];
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}
-(void)timeMethod
{
NSLog(@"---");
}
-(void)NSTimerMethod
{
//创建定时器
NSTimer *timer1 = [NSTimer timerWithTimeInterval:2.0 repeats:NO block:^(NSTimer * _Nonnull timer) {
NSLog(@"---");
}];
//将定时器加入主运行循环
[[NSRunLoop mainRunLoop]addTimer:timer1 forMode:NSDefaultRunLoopMode];
//取消定时器
//调用创建方法后,target对象的计数器会加1,直到执行完毕,自动减1。如果是循环执行的话,就必须手动关闭,否则可以不执行释放方法。在定时器功能结束以后或者控制器释放需手动释放定时器,不然容易引起内存泄漏.
// [timer1 invalidate];
}