Это то, что я встретил в одном из проектов:Как отлаживать текущую очередь в dispatch_async?
private func updateBadgeView() {
dispatch_async(dispatch_get_main_queue()) {
if UIApplication.sharedApplication().applicationIconBadgeNumber > 0 {
self.newMessagesBadgeView.hidden = false
self.newMessagesCountLabel.text = String(UIApplication.sharedApplication().applicationIconBadgeNumber)
} else {
self.newMessagesBadgeView.hidden = true
}
}
}
И я полагаю, что dispatch_async
с этой очередью бесполезно здесь. Как я могу проверить очередь здесь? Мне действительно нужен этот блок? Мне нужно проверить, является ли она той же самой очередью, что и без блока.
выше функция находится внутри подкласса UIViewController
и называется в viewDidLoad
и viewDidAppear
UPDATE:
Я знаю, что из-за ошибки в ИО, нужно здесь:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
dispatch_async(dispatch_get_main_queue()) {
self.presentOverlayController(selectViewController)
}
}
Вы хотите, чтобы проверить, если метод уже работает на главную очереди? См. Http://stackoverflow.com/questions/5662360/gcd-to-perform-task-in-main-thread. Но viewDidLoad и т. Д. * Вызывается в основной очереди. –
Странно, мне никогда не нужно это делать, что произойдет, если вы удалите dispatch_async –