定时任务就是一定时间内或一定时间之后做某事,一共三个方法。
现在要执行的操作是,2秒之后执行begin这个方法。
第一种方法:
[self performSelector:@selector(begin) withObject:nil afterDelay:2];
第二种方法:用多线程GCD实现
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2 * NSEC_PER_SEC)),dispatch_get_main_queue(),^{
self.hud.alpha=0.0
});
第三种方法:用NSTimer
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(begin)userInfo:nil repeats:NO];
// repeats如果为YES,每隔2秒就会调用一次begin方法
这里再补充一个绘图时使用的定时方法
在绘图的时候需要用到定时器,通常使用CADisplayLink(每次屏幕刷新的时候就会调用,屏幕一般一秒刷新60次),NSTimer很少用于绘图,因为调度优先级比较低,并不会准时调用,会有卡顿的情况出现
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(begin)];
// 添加主运行循环
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];