2012-05-23 3 views
0

나는 실을 꿰기에 아주 새롭다. 여기 내 문제가있다. 나는 NSXMLParser를 사용하는 커스텀 Parser 클래스를 가지고 있으며, 다른 작은 것들도 수행한다. 네트워크에서 XML을 파싱하고 값의 사전을 생성합니다. 또한 파서에서 전달 된 데이터 (NSDictionary)를 처리하고 관리 컨텍스트에서 실제 CoreData 객체를 생성하는 DataProctorsor 도우미 클래스가 있습니다.B- 스레드에서 파싱하지만 주 스레드에서 값을 파싱 하시겠습니까?

이제 파서를 배경 스레드로 옮기고 싶습니다. 어떻게해야합니까? (NSthread, NSOperation, GCD ...)? 파서는 NSDictionaries를 주 스레드에있는 데이터 프로세서로 어떻게 반환해야합니까?

파서 개체는 NSXMLParserDelegate 프로토콜 즉, 파서가 소유하고있는 NSXMLParser의 콜백을 처리합니다.

답변

1

사용 GCD는 콜백에있는 NSDictionary를받을 때, 백그라운드 스레드

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(queue, ^{ 
    //call your xml parser 
    //pass yourself in as it's delegate 
}); 

에 XML 파서를 시작 어떤 UI 요소

-(void)myCallBack:(NSDictionary*)newData { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     //execute on main queue 
     ProcessDictionaryData(newData); 
    }); 
} 
를 업데이트하기 전에 주요 큐에 다시 점프
관련 문제