OC中程式碼延遲執行方式
第一種:
[UIView animateWithDuration:1 delay:2 options:1 animations:^{
} completion:^(BOOL finished) {
}];
//不會阻塞執行緒,animations block中的程式碼對於是支援animation的程式碼,才會有延時效果,對於不支援animation的程式碼則不會有延時效果。
第二種:
[NSThread sleepForTimeInterval:3];//阻塞執行緒,浪費效能,一般不推薦用
第三種:最常用,延遲2秒執行:
double
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// code to be executed on the main queue after delay
});
//定製了延時執行的任務,不會阻塞執行緒,效率較高(推薦使用)
第四種:最直接的方法,這種方法的缺點:每次要為延時寫一個方法
[self performSelector:@selector(test) withObject:nil afterDelay:3];//不阻塞執行緒
5.使用NSOperationQueue,在應用程式的下一個主迴圈執行:
[[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];這個和呼叫performSelector: with afterDelay of 0.0f等價