私が作るしようとした - [NSStringのstringWithContentsOfURL:エンコーディング:エラー:]非同期に、バックグラウンドスレッドから、同期的にそれを実行することによって: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
最初に私は 'NSOperationQueue mainQueue 'のためにメインキューで動作しますが、' sendAsynchronousRequest'を見ました。これで、UIが更新されるのを止めるべきではありません。 –