내가 만드는 시도 - [있는 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가 업데이트되지 않아야합니다. –