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)
    }
}
Другие вопросы по тегам