How can I replace deprecated method dispatch_get_current_queue()? [duplicate]

▼魔方 西西 提交于 2019-12-04 15:02:10

问题


I am developing a chat application using xmppframework in iOS 5; it works perfectly.

But I updated my Xcode to 4.5.1, iOS 5 to iOS 6 and my Mac OS to 10.7.5, and the project did not work due to deprecation issues. I replaced all methods with new methods in iOS 6 except this one:

dispatch_get_current_queue()  

How can I replace this method in iOS 6?


回答1:


It depends what you need to achieve with this call.
Apple states that it should be used for debugging anyway.

Perhaps the queue does not matter (as you just need a background queue) so get a global queue with specific priority (dispatch_get_global_queue(dispatch_queue_priority_t priority, unsigned long flags);)

OR,

If you do need to execute some pieces of code in the same queue , create a queue, retain it and dispatch all your tasks there.




回答2:


How about using NSOperationQueue?

-(void) doSomeThing:(void (^)(BOOL success)) completionHandler
{
    NSOperationQueue* callbackQueue = [NSOperationQueue currentQueue];
    if(!callbackQueue) {
        callbackQueue = [NSOperationQueue mainQueue];
    }
    dispatch_async(...,^{
         // do heavyweight stuff here
         // then call completionHandler
         if(completionHandler) {
             [callbackQueue addOperationWithBlock:^{
                 completionHandler(...);
             }];
         }
    });


来源:https://stackoverflow.com/questions/12842166/how-can-i-replace-deprecated-method-dispatch-get-current-queue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!