延遲執行
方式一
[self performSelector:@selector(endAd) withObject:nil afterDelay:3];
//3秒後 執行下面這個方法
- (void)endAd {
NSLog(@"延遲執行");
}
//取消延遲執行
//取消定時器
- (void)cancelEndAd {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(endAd) object:nil];
}
//可用于 APP啟動的開機廣告頁
方式二 GCD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//3秒後 執行block内的代碼
});
定時器 NSTimer
- (void)awakeFromNib{
[super awakeFromNib];
NSTimer *timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(handleAction) userInfo:nil repeats:YES];
上面的這個方式建立 定時器 要手動添加到主運作循環中
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}
- (void)handleAction {
NSLog(@"-------1");
}
//停止定時器
- (void)stopTimer
{
[self.timer invalidate];
self.timer = nil;
}
- (void)awakeFromNib{
[super awakeFromNib];
//這種方法建立 定時器 不需要主動添加到循環中
[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(handleAction) userInfo:nil repeats:YES];
}
- (void)handleAction {
NSLog(@"-------1");
}
- (void)stopTimer
{
[self.timer invalidate];
self.timer = nil;
}
CADisplayLink 定時器
- 建立
成功後必須要把他添加到 主運作循環中CADisplayLink
- (void)awakeFromNib{
[super awakeFromNib];
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleAction)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}
- (void)handleAction {
NSLog(@"-------1");
}