Подтвердить что ты не робот

Как заменить устаревший метод dispatch_get_current_queue() с ios5 на ios6 в iphone?

Я разрабатываю приложение для чата с использованием xmppframework в IOS 5; он работает отлично. Но я обновил свой xcode до 4.5.1, ios5 до IOS 6 и мою Mac OS до 10.7.5, и проект не работал из-за устаревших проблем. Я заменяю все методы новыми методами в ios 6, кроме этого:

    dispatch_get_current_queue()  

Как заменить этот метод на IOS 6?

4b9b3361

Ответ 1

Это зависит от того, что вам нужно достичь с помощью этого вызова.
Apple заявляет, что он должен использоваться для отладки в любом случае.

Возможно, очередь не имеет значения (поскольку вам просто нужна фоновая очередь), чтобы получить глобальную очередь с определенным приоритетом (dispatch_get_global_queue(dispatch_queue_priority_t priority, unsigned long flags);)

ИЛИ,

Если вам нужно выполнить некоторые фрагменты кода в одной очереди, создайте очередь, сохраните ее и отправьте туда все свои задачи.

Ответ 2

Как насчет использования 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(...);
             }];
         }
    });