在專案開發中經常會用到方法的延時調用,具體的調用場景不做贅述,以下列舉現有的幾種實現方式:
方法一:performSelector (建議學習:phpstorm
[self performSelector:@selector(delayMethods) withObject:nil afterDelay:1.0];
#
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayMethods) object:nil];#
[NSObject cancelPreviousPerformRequestsWithTarget:self];非阻塞執行方式,不會影響其他程序;必須在主執行緒中執行;
可以主動取消操作:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(delayMethods) userInfo:nil repeats:NO];如果要取消目前所有延時操作:
[timer invalidate];註:該方法不夠安全,這個方法在呼叫時會設定目前runloop中的timer。但我們知道:只有主執行緒會在創建的時候預設自動執行一個runloop,並且含有timer,普通的子執行緒是沒有runloop和timer的。 所以在子執行緒中被呼叫的時候,我們的程式碼中延時操作的程式碼就會一直等待timer得調度,但是實際上子執行緒中沒有timer,這就會導致我們的延時操作程式碼永遠不會被執行。
方法二:NSTimer
[NSThread sleepForTimeInterval:1.0];分析:此方法是一種非阻塞執行方式,不會影響其他行程;必須在主執行緒中執行;預設為在主執行緒中設定一個定時器;可以設定是否重複執行延時操作;
#取消延時操作:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self delayMethods]; });註:若repeats參數設定為NO,執行完成後timer會自動銷毀,若repeats參數設定為YES,執行完成後,必須手動呼叫[timer invalidate]才能銷毀定時器;
方法三:sleep
dispatch_queue_t queen = dispatch_get_global_queue(0, 0); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), queen, ^{ [self delayMethods]; });分析:這個方法是一種阻塞執行方式,最好放在子執行緒執行,否則會影響其他方法的執行。
方法四:GCD
__weak typeof(self) ws = self; dispatch_queue_t queen = dispatch_get_global_queue(0, 0); dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queen); if (timer) { dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 1.0 * NSEC_PER_SEC); dispatch_source_set_event_handler(timer, ^{ [ws delayMethods]; }); dispatch_resume(timer); }分析:此方法是一種非阻塞執行方式,不會影響其他進程;可以在參數中設定執行的進程:
rrreee也可以設定是否重複執行:
rrreee註:
因為方法交給了GCD自動處理,因此不容易取消操作###以上是iOS幾種延遲執行方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

國產AI黑馬DeepSeek強勢崛起,震撼全球AI界!這家成立僅一年半的中國人工智能公司,憑藉其免費開源的大模型DeepSeek-V3和DeepSeek-R1,在性能上與OpenAI等國際巨頭比肩,甚至在成本控制方面實現了突破性進展,贏得了全球用戶的廣泛讚譽。 DeepSeek-R1現已全面上線,性能媲美OpenAIo1正式版!您可以在網頁端、APP以及API接口體驗其強大的功能。下載方式:支持iOS和安卓系統,用戶可通過應用商店下載;網頁版也已正式開放! DeepSeek網頁版官方入口:ht

DeepSeek:火爆AI遭遇服務器擁堵,如何應對? DeepSeek作為2025年開年爆款AI,免費開源且性能媲美OpenAIo1正式版,其受歡迎程度可見一斑。然而,高並發也帶來了服務器繁忙的問題。本文將分析原因並提供應對策略。 DeepSeek網頁版入口:https://www.deepseek.com/DeepSeek服務器繁忙的原因:高並發訪問:DeepSeek的免費和強大功能吸引了大量用戶同時使用,導致服務器負載過高。網絡攻擊:據悉,DeepSeek對美國金融界造成衝擊,

2025年開年,國產AI“深度求索”(deepseek)驚艷亮相!這款免費開源的AI模型,性能堪比OpenAI的o1正式版,並已在網頁端、APP和API全面上線,支持iOS、安卓和網頁版多端同步使用。深度求索deepseek官網及使用指南:官網地址:https://www.deepseek.com/網頁版使用步驟:點擊上方鏈接進入deepseek官網。點擊首頁的“開始對話”按鈕。首次使用需進行手機驗證碼登錄。登錄後即可進入對話界面。 deepseek功能強大,可進行代碼編寫、文件讀取、創

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境