延迟执行
所谓延迟执行就是延时一段时间再执行某段代码。下面说一些常用方法。
-
perform
OBJECTIVE-C
// 3秒后自动调用self的run:方法,并且传递参数:@"abc" [self performSelector:@selector(run:) withObject:@"abc" afterDelay:3];
SWIFT
之前就已经说过,Swift 里去掉了这个方法。
-
GCD
可以使用 GCD 中的
dispatch_after
方法,OC 和 Swift 都可以使用,这里只写 OC 的,Swift 的是一样的。OBJECTIVE-C
// 创建队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 设置延时,单位秒 double delay = 3; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), queue, ^{ // 3秒后需要执行的任务 });
-
NSTimer
NSTimer 是iOS中的一个计时器类,除了延迟执行还有很多用法,不过这里直说延迟执行的用法。同样只写 OC 版的,Swift 也是相同的。
OBJECTIVE-C
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(run:) userInfo:@"abc" repeats:NO];