ios中設置延遲執行操作

第一種方法:performSelector方法

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

暫時未找到取消執行的方法。

[self performSelector:@selector(test) withObject:nil afterDelay:5.0f];

第二種方法:定時器:NSTimer

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

可以通過NSTimer類的- (void)invalidate;取消執行。

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(test) userInfo:nil repeats:NO];

第三種方法:sleep方式

此方式在主線程和子線程中均可執行。

是一種阻塞的執行方式,建方放到子線程中,以免卡住界面

沒有找到取消執行的方法。

[NSThread sleepForTimeInterval:1.0f];

[self test];

第四種方法:GCD方式

此方式在可以在參數中選擇執行的線程。

是一種非阻塞的執行方式,

沒有找到取消執行的方法。

double delayInSeconds = 1.0;

__block ViewController* bself = self;

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));

dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

???? [bself test];

});

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述 這篇文章中,我不會說多線程是什么、線程和進程的區別、多線程有什么用,當然我也不會說什么是串行、什么是并行等問...
    hashakey閱讀 313評論 0 0
  • 在這篇文章中,我將為你整理一下 iOS 開發中幾種多線程方案,以及其使用方法和注意事項。當然也會給出幾種多線程的案...
    伯恩的遺產閱讀 274,890評論 251 2,331
  • 首先明確線程和進程的關系和區別: 一個程序至少有一個進程,一個進程至少有一個線程. 線程的劃分尺度小于進程,使得多...
    kkj1996閱讀 215評論 0 0
  • pthread NSThread GCD1. 同步、異步、并發、串行講解2. 創建隊列的幾種方式3. 柵欄函數4...
    Mark_Guan閱讀 1,252評論 0 8
  • 我出生于1987年,到今年剛好三十周歲。恍若一念之間,我已然闖入而立之年,還沒來得及為逝去的青春撰寫墓志銘,又得去...
    寶木非衣閱讀 470評論 0 2