DispatchQueue: нельзя вызывать с asCopy = NO в неосновном потоке - PullRequest
0 голосов
/ 15 октября 2018

Я представляю 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 Ответ

0 голосов
/ 15 октября 2018

Вы должны вызвать весь код из 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)
    }
}
...