我将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)
我能正确地获取输出。
但是,在控制台中我收到以下消息:
[断言] 不能在非主线程上使用asCopy = NO调用。
这里有什么我做错了吗,或者我可以忽略这条消息吗?
编辑
感谢@NicolasMiari :
添加下面的代码不会显示任何消息:
DispatchQueue.main.async {
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
}
之前为什么会在控制台显示该消息的原因是什么?
let alertMessage =...
开始的 所有内容 移动到async
块内吗? - Nicolas MiarishowAlertMessage()
方法时,该线程运行在哪里? - Nicolas Miari