iOS-延時執行常見的幾種方法
本節主要介紹幾種我們通常用到的實現延時的方法。
延時方法我們統一呼叫- (void)delayMethod
- (void)delayMethod
{
NSLog(@"delayMethodEnd = %@",[NSThread currentThread]);
}
1.performSelector方法
該方法也是在主執行緒中執行的方法,同NSTimer一樣,不會阻塞主執行緒。
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:2.0];
取消performSelector
[self performSelector:@selector(delayMethod) withObject:nil afterDelay:2.0];
注意:上面的取消方法的引數要和執行action的時候傳遞的引數保持一致。這種方法用來取消某個特定的延遲方法。
取消performSelector的所有被延遲執行的方法:
[NSObject cancelPreviousPerformRequestsWithTarget:self];
2. NSTimer定時器
NSTimer 是iOS開發工作中經常會使用到,充當著定時器的作用。NSTimer不會阻塞主執行緒,只是把action滯後,到指定時間由主執行緒繼續執行。
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
取消延時,定時器物件呼叫方法:
[timer invalidate];
3. NSThread執行緒的sleep
此方法是一種阻塞執行方式,建議放在子執行緒中執行,否則會卡住介面。但有時還是需要阻塞執行,如進入歡迎介面需要沉睡3秒才進入主介面時。
[NSThread sleepForTimeInterval:2.0] ;
4. GCD
GCD的dispatch_after
方法常被用來做延遲執行,與上面的兩個相比,它可以在除了主執行緒之外的執行緒執行,當然也不會阻塞執行緒。
__weak ViewController *weakSelf = self;
/*延遲執行時間2秒*/
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC));
dispatch_after(delayTime, dispatch_get_main_queue(), ^{
[weakSelf delayMethod];
});
相關推薦
iOS延時執行的幾種方法
1. 最直接的方法performSelector:withObject:afterDelay: 這種方法的缺點:每次要為延時寫一個方法 2. @implementation NSObject (PerformBlockAfterDelay) - (void)p
IOS開發之延時執行的幾種方法
1.最直接的方法performSelector:withObject:afterDelay: 這種方法的缺點:每次要為延時寫一個方法 2.使用類別,用BOLCK執行 [程式碼]c#/cpp/oc程式碼: 01 @implementation NSObje
iOS-延時執行常見的幾種方法
本節主要介紹幾種我們通常用到的實現延時的方法。 延時方法我們統一呼叫- (void)delayMethod - (void)delayMethod { NSLog(@"delayMethodEnd = %@",[NSThread currentT
Android延時執行的四種方法
一、開啟新執行緒 new Thread(new Runnable(){ publicvoid run(){ Thread.sleep(XXXX); handler.sendMessage();
android延時執行的幾種方式
在專案中有很多的方法可能我們不需要立即執行,那麼就需要延時。 首先第一種就是執行緒: sleep會阻塞執行緒 new Thread (new Runnable(){ public void run(){ Thread.sleep(time
C++ 程式延時處理的幾種方法
(—)使用_sleep()函式 例如:_sleep(200);//延時200毫秒 (二)使用delay(int time)函式 (需要自己實現,編譯器裡面沒有) /// @brief 程式延時
筆記118--Android延時執行的四種方法
轉自:http://jingyan.baidu.com/article/636f38bb091ebbd6b8461029.html 一、開啟新執行緒 new Thread(new Runnable(){ public void run(){
Linux 技巧:讓進程在後臺可靠執行的幾種方法
stl 選項 con 中斷 program ng- dem 不同 正在 我們常常會碰到這種問題。用 telnet/ssh 登錄了遠程的 Linux server,執行了一些耗時較長的任務, 結果卻因為網絡的不穩定導致任務中途失敗。怎樣讓命令提交後不受本地關閉終端
iOS-網絡檢測的幾種方法
else required 判斷網絡狀態 sha geb all ane mes nsinteger 1.AFN框架中的:AFNetworkReachabilityManager //AFN判斷網絡 -(void)getInternetStatue{ // 1.獲得網絡監控
iOS 畫圓圖片的幾種方法
方法一: self.cycleImv= [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)]; [self.view addSubview:self.cycleImv]; // 為圖片切圓 self.
重新命名程式日誌--批處理延時啟動的幾個方法
@echo off taskkill /f /im "3CSyslog.EXE" choice /t 1 /d y /n >nul cd E:\PIX_LOG del syslog.log333 choice /t 1 /d y /n >nul ren syslog.log222
重命名程序日誌--批處理延時啟動的幾個方法
判斷 echo 排列 sta 提示信息 文件中 創建 rec 警告 @echo off taskkill /f /im "3CSyslog.EXE" choice /t 1 /d y /n >nul cd E:\PIX_LOG del syslo
iOS-UIViewController建立的幾種方法和UIWindow的介紹
在程式的啟動過程中提到如果沒有storyboard時: * 程式啟動時候, 就會呼叫代理的application: didFinishLaunchingWithOptions:方
Android常用延時操作的兩種方法
今天專案中增加一個延遲2S操作的功能,所以想起了曾經用過的兩種方法--簡單的定時器 第一種,用Timer TimerTask task = new TimerTask() { @Override public void run() { // 你要做的操
linux shell 多個命令一起執行的幾種方法
在命令列可以一次執行多個命令,有以下幾種: 1.每個命令之間用;隔開 說明:各命令的執行結果,不會影響其它命令的執行。換句話說,各個命令都會執行, 但不保證每個命令都執行成功。 cd /home/PyTest/src; python suning.py
讓Python指令碼暫停執行的幾種方法(轉載)
轉自:讓Python指令碼暫停執行的幾種方法 1.time.sleep(secs) 參考文件原文: Suspend execution for the given number of seconds. The argument may be a
小學ios:navigation push的幾種方法
今天,講講navigation 裡面push到下個頁面的幾種方法吧,現在我知道的是三種,至於其他的麼,等以後用到了,在補充進來吧。 首先第一個就是,在storyboard裡面,直接右鍵拉過去,然後選擇push方法,這個是最簡單的方法了,不需要任何程式碼,就能實現從一個vie
讓程序在後臺可靠執行的幾種方法
簡介: 想讓程序在斷開連線後依然保持執行?如果該程序已經開始運行了該如何補救? 如果有大量這類需求如何簡化操作? 我們經常會碰到這樣的問題,用 telnet/ssh 登入了遠端的 Linux 伺服器,運行了一些耗時較長的任務, 結果卻由於網路的不穩定導致任務中途失
asp.net 執行js 幾種方法
方法二: <asp:Literal ID="ltScript" runat="server"></asp:Literal> 然後使用Literal類,在後臺程式碼使用時 private void Button1_Click(object sender
IOS關閉虛擬鍵盤的幾種方法
第一種方法 使用它的委託UITextFieldDelegate中的方法textFieldShouldReturn:來關閉虛擬鍵盤。 在UITextField檢視物件如birdNameInput所在的類中實現這個方法。 - (BOOL)textFie