2011-09-03 19 views
10

在我的iOS程序中,我想讓一個函數暫停1秒。我需要寫什麼代碼才能做到這一點?如何在iOS編程中暫停時間

+8

很難正確回答這個問題,而不知道你爲什麼想暫停一秒鐘。除非您非常小心,否則您只會阻止用戶界面進行第二次,這是一種非常糟糕的用戶體驗。 – Abizern

回答

24

您可以使用其中的一個:sleep(1);wait(1);

或者你可以使用[NSThread sleepForTimeInterval:1.0]

而且還有performSelector:withObject:afterDelay

+3

或者,將其餘任務放在一個塊中,並使用'dispatch_after'安排它;) – Abizern

+3

睡覺幾乎肯定不是一個好主意。如果Twinkle不知道如何使用'sleep',我懷疑e是在使用後臺線程。這意味着暫停UI線程。 –

+1

我想暫停後臺線程。 – Twinkle

2

較新的到iOS是完成塊。例如,如果在視圖控制器彈出後需要執行某些操作,則可以使用塊。我最近使用這種方法解除了組成視圖控制器的消息,然後在成功時彈出當前視圖控制器。

老辦法:

[controller dismissModalViewControllerAnimated:YES]; 
// Use an NSThread or performSelector:withObject:afterDelay 

新途徑:

[controller dismissViewControllerAnimated:YES completion:^{ 
    if (result != MessageComposeResultCancelled){ 
    // If cancelled remain on current screen, else pop to parent view controller 
    [self.navigationController popViewControllerAnimated:YES]; 
    } 
}]; 
3

另一種方式來做到這一點:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//Place code here}); 

睡眠()和wait()是有時看不起,但只要你明白髮生了什麼使用它在你的自由意志