Как заменить устаревший метод 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?
Ответы
Ответ 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(...);
}];
}
});