Делаем stringWithContentsOfURL асинхронным -Безопасно ли это?

Я попытался сделать -[NSString stringWithContentsOfURL :encoding :error :] асинхронным, запустив его -синхронно из фонового потока:

__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();
    });
});

Он отлично работает и, самое главное, асинхронный.

Мой вопрос в том, безопасно ли это делать, или могут быть какие-либо проблемы с потоками и т. Д.?

Заранее спасибо:)

6
задан JonasG 23 July 2012 в 22:07
поделиться