問題 大家都知道,在iOS里的AlertView不會阻塞後續代碼的執行,但如果有時候需要這樣做該怎麼辦呢? 解決方案 通過回調 也就是把後續要執行的代碼放到回調函數中去,可以參見 "UIAlertView Blocks" ,我今天要重點說明的是下麵這種方式。 使用RunLoop 我們都主線程上的Ru
問題
大家都知道,在iOS里的AlertView不會阻塞後續代碼的執行,但如果有時候需要這樣做該怎麼辦呢?
解決方案
通過回調
也就是把後續要執行的代碼放到回調函數中去,可以參見UIAlertView-Blocks,我今天要重點說明的是下麵這種方式。
使用RunLoop
我們都知道主線程上的RunLoop在沒有"消息"觸發的時候會讓線程進入休眠狀態。所以,要實現阻止後續代碼執行的功能,也可以借鑒這種方式。在AlertView彈出來之後如下處理:
while(!self.flag){ [[NSRunLoop currentRunLoop] runMode:(NSString *)kCFRunLoopDefaultMode beforeDate:[NSDate distantFuture]]; } NSLog(@"Flow Control Resumed");
然後在AlertView消失的時候重置下flag就可以達到目的了。