【发布时间】:2012-07-22 04:54:40
【问题描述】:
我试图通过从后台线程异步运行 -[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();
});
});
它工作正常,最重要的是它是异步的。
我的问题是这样做是否安全,或者是否存在任何线程问题等?
提前致谢:)
【问题讨论】:
标签: objective-c ios asynchronous thread-safety http-request