許多帖子都說UIKit完全不是線程安全的。現在在GCD的Apple文檔中,我們可以看到它的繪圖不是線程安全的。所以會像這樣的代碼即可:UIKit和GCD線程安全
dispatch_async(^ {
//do some work if(!self.window.rootViewController.presentedViewController &&) [self.window.rootViewController class] == anotherClass) { dispatch_async(dispatch_get_main_queue(), ^{ //do some work }); }
});
那麼,考慮到rootViewController被聲明爲'@property(nonatomic,retain)UIViewController * rootViewController',我想不會。 – Mar0ux 2013-04-30 12:27:35
爲什麼不直接在主線程上進行調度測試。在主線以外的其他線程上使用UI元素時會出現火災,即使它在iOS 6中正常工作,您的應用可能會在iOS 7中發生嚴重失敗。 – 2013-04-30 12:41:20
導致該塊位於另一個dispatch_async()中的while循環中,否則該循環將阻止主線程。 – foFox 2013-04-30 12:44:23