我正在運行UIBackgroundTaskIdentifier
下的某個任務,因爲我想在後臺運行它。我的代碼看起來像這樣。調用UIBackgroundTaskIdentifier中的主隊列
-(void) function
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
UIBackgroundTaskIdentifier BGIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{}];
// some processing
dispatch_async(dispatch_get_main_queue(), ^{
// some UI stuff
});
// some processing again
dispatch_async(dispatch_get_main_queue(), ^{
// some UI stuff again
});
[[UIApplication sharedApplication] endBackgroundTask:BGIdentifier];
});
}
所以我有兩個問題。
- 如果我的應用程序在後臺進行某些處理時發生dispatch_async調用主隊列會發生什麼情況?
- 這是一個很好的設計?
感謝Rob指出了這一點。我編輯了這個問題。 – shshnk