1. 程式人生 > >IOS開發之延時執行的幾種方法

IOS開發之延時執行的幾種方法

1.最直接的方法performSelector:withObject:afterDelay: 這種方法的缺點:每次要為延時寫一個方法 2.使用類別,用BOLCK執行

[程式碼]c#/cpp/oc程式碼:

01 @implementation NSObject (PerformBlockAfterDelay)
02
03 - (void)performBlock:(void (^)(void))block
04 afterDelay:(NSTimeInterval)delay
05 {
06 block = [[block copy] autorelease];
07 [self performSelector:@selector(fireBlockAfterDelay:)
08 withObject:block
09 afterDelay:delay];
10 }
11
12 - (void)fireBlockAfterDelay:(void (^)(void))block {
13 block();
14 }
15
16 @end

3.使用GCD

[程式碼]c#/cpp/oc程式碼:

1 void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
2 {
3 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
4 dispatch_get_current_queue(), block);
5 }

4.可能是不太好的方法,用animation的completion引數

[程式碼]c#/cpp/oc程式碼:

1 [UIView animateWithDuration:0.0 delay:5.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
2 } completion:^(BOOL finished) {
3 //do stuff here
4 }];

5.使用NSOperationQueue,在應用程式的下一個主迴圈執行:

[程式碼]c#/cpp/oc程式碼:

1 [[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];

這個和呼叫performSelector: with afterDelay of 0.0f等價

相關推薦

IOS開發執行方法

1.最直接的方法performSelector:withObject:afterDelay: 這種方法的缺點:每次要為延時寫一個方法 2.使用類別,用BOLCK執行 [程式碼]c#/cpp/oc程式碼: 01 @implementation NSObje

c++中實現方法

方法七:對於精確度要求更高的定時操作,則應該使用QueryPerformanceFrequency()和 QueryPerformanceCounter()函式。這兩個函式是VC提供的僅供Windows 95及其後續版本使用的精確時間函式,並要求計算機從硬體上支援精確定時器。如示例工程中的Timer7、Ti

iOS開發關於Runtime執行:類與物件

Objective-C語言是一門動態語言,它將很多靜態語言在編譯和連結時期做的事放到了執行時來處理。這種動態語言的優勢在於:我們寫程式碼時更具靈活性,如我們可以把訊息轉發給我們想要的物件,或者隨意交換一個方法的實現等。 這種特性意味著Objective-C不僅需要一個編譯器,還需要一個執行時系統

Java使用Executor執行Callable任務方法

多執行緒在需要返回值時,我們知道需要用到Callable和Future。Callable的cell方法可以返回一個值並且可丟擲異常,是對Runnable的很好的補充;Future表示了一個任務的週期,它提供了判斷任務狀態、獲取任務結果和取消任務等方法 。 下面演示三種使用Executor執行Call

stm32CubeMX HAL庫中方式解析

/* * 本檔案包括四種延時方式: * 1. 原來的HAL庫函式HAL_Delay() 2. 採用定時器2設定延時函式 3. 採用系統滴答中斷方式的ms和us級延時 * 4. 採用系統滴答非中斷方式的ms和us級延時(在一次計數值範圍內的延時) */ /* Includes ----

Android開發合併檔案的方式

        下面介紹合併檔案的幾種方式,並通過合併amr檔案來舉例介紹合併檔案的具體流程。amr格式的檔案頭是6位元組,所以在進行檔案合併的時候要減去除第一個檔案以外的其他檔案的檔案頭。 注意:不

iOS開發- 關於Block的應用

關於Block,博主不才,簡單分為三種來用: 像函式一樣定義和使用,,不同於函式的是可以定義在方法內也可以定義在方法外 定義成property的屬性來使用 用作修飾詞 接下來一樣樣的來展示; 1.像函式一樣定義和使用,,不同於函式的是可以定義在方法內也

ios開發--NSString中substringFromIndex,substringWithRange,substringToIndex方法的使用

字符 nsrange min nbsp 範圍 clas ring div make 1,substringFromIndex 從索引0開發到到index的後面的字符 2,substringWithRange 取指定range裏面的字符,左邊為索引index,右邊為截取的範圍

Unity查詢物件的方法

GameObject.FindObjectsOfType(typeof(型別)) as 型別[];  GameObject.FindObjectsOfType<型別>(); GameObject.FindObjectsOfTypeAll(typeof(型別[]))as 型別[];此方法在新版本

iOS字型大小適配的方法

在iOS開發中,有些公司對字型也有適配要求,為了讓字型美觀,所以在不同尺寸的螢幕上字型大小也要做到適配。 自己總結了幾種方法供大家參考。 方法一:用巨集定義適配字型大小(根據螢幕尺寸判斷) //巨集定義 #define SCREEN_WIDTH ([UIScreen mainScreen].

Android開發中簡化findViewById的方法

這幾天查資料,DataBind暫且不談,簡化findViewById方法主要有三種:1、註解;2、另類寫法;3、已有框架。 二、另類寫法,使用泛型可以簡化強制轉化的步驟,該方法在BaseActivi

iOS 開發顯示文件的兩方法

在本篇文章中,介紹開啟檔案的兩種方法: 一.利用UIWebView      使用UIWebView物件顯示文件時在iOS中使用最多的解決方案。   //開啟PDF文件     [selfopenFile:@"PDF_SEHistory.pdf"type:@"pdf"

iOS開發textField字元長度限制的方法

在微信公眾號上看到一篇技術文章,是關於UITextField輸入時限制字元長度的方法,突然想到當時練習時剛好也遇到這個問題,因此整理一下。 UITextField的相關代理方法 // 返回值為YES表示允許編輯,返回值NO為表示不允許編輯 - (

核心的N方法

方法一:NdisMSleep VOID NdisMSleep( IN ULONG MicrosecondsToSleep ); 直接呼叫NdisMSleep,它的引數是微秒數量級。不過這裡一定要注意 呼叫環境: KeGetCu

iOS防重複點選的方法

1.全域性變數flag法 @property(nonatomic,assign)BOOLisClickedFlag;//防止重複點選 #pragma mark -- 全域性變數flag法 - (void)LJBtnClicked { if (self.isClick

iOS ViewController跳轉介面的方法簡單總結

涉及到的類詳解: UINavigationBar :繼承至UIView,NavigaitonBar就是導航欄,位於螢幕的上方,管理整個NavigationController的navigationItem,即類似navigationcontroller一樣提供了一個棧來管理item。 UINavigatio

iOS-執行常見的方法

本節主要介紹幾種我們通常用到的實現延時的方法。 延時方法我們統一呼叫- (void)delayMethod - (void)delayMethod { NSLog(@"delayMethodEnd = %@",[NSThread currentT

iOS執行方法

1. 最直接的方法performSelector:withObject:afterDelay: 這種方法的缺點:每次要為延時寫一個方法 2. @implementation NSObject (PerformBlockAfterDelay) - (void)p

Android中實現執行操作的方法

在Android開發中我們可能會有延時執行某個操作的需求,例如我們啟動應用的時候,一開始呈現的是一個引導頁面,過了兩三秒後,會自動跳轉到主介面。這就是一個延時操作。  下面是實現延時執行操作的幾種方法: 1.使用執行緒的休眠實現延時操作    new Thread() {

iOS開發UITableView中計時器的實現方式(NSTimer、DispatchSource、CADisplayLink)

最近工作比較忙,但是還是出來更新部落格了。今天部落格中所涉及的內容並不複雜,都是一些平時常見的一些問題,通過這篇部落格算是對UITableView中使用定時器的幾種方式進行總結。本篇部落格會給出在TableView中使用NSTimer或者DispatchSourcer中常見的五種方式。當然下方第一種方式是常規