2012-04-09 49 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

相关问题