// 여기서부터 비동기 코드 시작.
// dispatch_async 함수는 내부블럭의 코드 실행에 영향을 받지 않고 바로 실행이 끝난다.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
// 작업이 오래 걸리는 API를 백그라운드 스레드에서 실행한다.
BOOL res = [self heavyOperatingMethod];
dispatch_async(dispatch_get_main_queue(), ^{
// 이 블럭은 메인스레드(UI)에서 실행된다.
if (res) {
[self operationSucceed];
} else {
[self operationFailed];
}
});
});
원문 출처 : http://seorenn.blogspot.com/2012/04/ios.html