這條線在3秒後調用選擇secondMethod:
[self performSelector:@selector(secondMethod) withObject:nil afterDelay:3.0 ];
與你期望的延遲使用它在你的第二個操作。如果您有很多代碼,請將其置於其自己的方法中,並使用performSelector:
調用該方法。它不會阻止像sleep
編輯UI:如果你不想讓你可以添加一個類別中的第二種方法可以使用塊與performSelector:
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [block copy];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block
{
block();
}
@end
或許更清潔:
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
dispatch_get_current_queue(), block);
}
向人們警告這是正確的,但是如果您編碼的控制器需要等待外部設備進行固定的處理時間,則它不是無意義的。 – user2161301 2015-10-02 11:55:41
如何在寫入搜索欄時延遲HTTP請求?在輸入時過濾結果?在請求一個過濾列表之前等待一秒鐘,而不是向服務器查詢用戶點擊的每個按鍵,這聽起來對我來說並不是什麼廢話。 – 2016-07-15 17:00:50