一、performSelector
- 非阻塞
- 主线程执行(子线程不启动runloop的话不会执行)
[self performSelector:@selector(delayMethods) withObject:nil afterDelay:1.0];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayMethods) object:nil];
[NSObject cancelPreviousPerformRequestsWithTarget:self];
二、NSTimer
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(delayMethods) userInfo:nil repeats:NO];
[timer invalidate];
三、sleep
1)、objective-c
[NSThread sleepForTimeInterval:1];
2)、c
sleep(1);
四、GCD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self delayMethods];
});