1. 程式人生 > >OC中程式碼延遲執行方式

OC中程式碼延遲執行方式

    第一種:

    [UIView animateWithDuration:1 delay:2 options:1 animations:^{

    } completion:^(BOOL finished) {

    }];

//不會阻塞執行緒,animations  block中的程式碼對於是支援animation的程式碼,才會有延時效果,對於不支援animation的程式碼則不會有延時效果。

    第二種:

    [NSThread sleepForTimeInterval:3];//阻塞執行緒,浪費效能,一般不推薦用

第三種:最常用,延遲2秒執行:

    double

delayInSeconds = 2.0;

    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等價