2012-04-09 48 views
4

我是新的MKNetworkKit,我有一個小設計問題。我正在嘗試在後臺線程上處理由MKNetworkOperation獲取的數據,但我不確定爲了保持設計清潔,在哪裏做。如何在後臺線程上處理MKNetworkKit的數據?

[op onCompletion:^(MKNetworkOperation *completedOperation) { 
    NSDictionary *jsonDictionary = [completedOperation responseJSON]; 

    // This part is always called on the main thread but 
    // I want to process here my jsonDictionary on a background thread 
    // to avoid blocking the main thread 
} onError:^(NSError* error) { 
    errorBlock(error); 
}]; 

我jsonDictionary的處理時間需要很長的時間,我真的不想這樣做,在主線程上,你會怎麼推薦我切換到後臺線程,同時保持的設計和理念MKNetworkKit乾淨?

感謝,
馬丁

回答

3

在您完成處理程序使用此代碼。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 

    //asynchronous code 
    dispatch_async(dispatch_get_main_queue(), ^{ 

     //synchronous code 
    }); 
}); 
+0

謝謝!可以肯定的是,「異步代碼」位於後臺線程上,「同步代碼」位於主線程上? – MartinMoizard 2012-04-09 17:50:02

+0

是的,你可以在任何地方使用這個dispatch_async代碼。不只是在MKNetworkKit中 – Mugunth 2012-04-10 09:19:37

相關問題