我正在介绍的是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
as:
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
我得到了正确的输出。
但在控制台中我收到以下消息:
[断言] 无法在非主线程上使用 asCopy = NO 进行调用。
我在这里做错了什么或者我可以忽略此消息吗?
Edit
感谢@NicolasMiari:
添加以下代码不会显示任何消息:
DispatchQueue.main.async {
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
}
之前在控制台中显示该消息的原因可能是什么?
您应该从以下位置调用所有代码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)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)