DispatchQueue: нельзя вызывать с asCopy = NO в неосновном потоке
Я представляю UIAlertController
в основном потоке как:
class HelperMethodClass: NSObject {
class func showAlertMessage(message:String, viewController: UIViewController) {
let alertMessage = UIAlertController(title: "", message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Ok", style: .cancel)
alertMessage.addAction(cancelAction)
DispatchQueue.main.async {
viewController.present(alertMessage, animated: true, completion: nil)
}
}
}
И я вызываю метод из любого UIViewController
как:
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
Я получаю вывод правильно.
Но в консоли я получаю сообщение ниже:
[Assert] Нельзя вызывать с asCopy = NO в неосновном потоке.
Я что-то здесь не так сделал или могу игнорировать это сообщение?
редактировать
Благодаря @NicolasMiari:
При добавлении кода ниже не отображается ни одно сообщение:
DispatchQueue.main.async {
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
}
В чем может быть причина того, что ранее оно показывало сообщение в консоли?
1 ответ
Решение
Вы должны позвонить весь код с showAlertMessage
в основной очереди:
class func showAlertMessage(message:String, viewController: UIViewController) {
DispatchQueue.main.async {
let alertMessage = UIAlertController(title: "", message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Ok", style: .cancel)
alertMessage.addAction(cancelAction)
viewController.present(alertMessage, animated: true, completion: nil)
}
}