Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 745
venkat Avatar asked Oct 11 '12 14:10

venkat


2 Answers

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.

like image 183
Nir Golan Avatar answered Oct 16 '22 17:10

Nir Golan


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(...);
             }];
         }
    });
like image 27
adib Avatar answered Oct 16 '22 18:10

adib