我試圖讓 - [的NSString stringWithContentsOfURL:編碼:錯誤:]異步的,由後臺線程運行它,synchronically:使stringWithContentsOfURL異步 - 是否安全?
__block NSString *result;
dispatch_queue_t currentQueue = dispatch_get_current_queue();
void (^doneBlock)(void) = ^{
printf("done! %s",[result UTF8String]);
};
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
result = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com/"] encoding:NSUTF8StringEncoding error:nil];
dispatch_sync(currentQueue, ^{
doneBlock();
});
});
它的做工精細,最重要的是,它的異步。
我的問題是,如果這樣做是安全的,或者可能有任何線程問題等?
在此先感謝:)
乾杯!我不知道這是可能的:P – JonasG 2012-07-23 23:30:12
首先,我認爲這將在主隊列上工作,因爲有['NSOperationQueue mainQueue]',但是我看到'sendAsynchronousRequest'。所以這不應該阻止UI更新。 – 2016-08-11 10:02:36