当我的提醒尝试弹出时,为什么会出现一个主题1:EXC_BREAKPOINT?

时间:2017-03-04 00:43:31

标签: ios swift swift3

我对调试和找出错误并不太好。因此,我的应用程序基本上会有一个通知,当按下“通话”通知的操作时,会弹出一个警告,并在调度通知时调用您最初放入UITextField的号码。当该操作由于某种原因将我带入应用程序时,我甚至没有收到警报并且弹出Thread 1: EXC_BREAKPOINT错误。任何帮助都会很棒:)谢谢。这是我的代码,问题可能来自:

在我的ViewController子类中:

func showAlert(title: String, message : String, buttonTitle1: String, buttonTitle2: String,window: UIWindow){

    // create the alert
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)

    // add the actions (buttons)
    alert.addAction(UIAlertAction(title: buttonTitle1, style: UIAlertActionStyle.default, handler: { action in
        if let url = URL(string: "tel://\(self.phoneNumber.text)") {
            UIApplication.shared.open(url, options: [:])
        }
    }))

    alert.addAction(UIAlertAction(title: buttonTitle2, style: UIAlertActionStyle.cancel, handler: nil))    

    // show the alert
    self.present(alert, animated: true, completion: nil)
}

//Main Stuff
var window: UIWindow?

ViewController扩展名:

extension ViewController: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

        if response.actionIdentifier == "call" {
            self.showAlert(title: "Enter Call", message: "Are you sure?", buttonTitle1: "Go", buttonTitle2: "Cancel", window: self.window!)
        }
    }
}

2 个答案:

答案 0 :(得分:0)

要关闭意外断点,您可以转到"断点导航器"。

在Xcode窗口的左侧,您会看到看起来像一个梯形的图标(它是此屏幕截图左上方的红色圆圈):

Breakpoint Navigator

虽然我的屏幕截图中当前只设置了一个断点,但您的项目中可能会设置更多断点(偶然)。如果切换蓝色标志,则断点将被禁用。您可以将该标志拖离列,并删除断点。

您还可以在点击标记的同时按住控制键,然后您会看到一个允许您执行相同操作的弹出菜单。

最后,有一个"停用断点" Xcode" Debug"中的菜单选项菜单,您可以在其中切换菜单"取消激活"和"激活"。

答案 1 :(得分:0)

您可能会因为在主线程之外启动UI活动而崩溃。尝试将DIAlert调用包装在DispatchQueue中,如下所示:

func showAlert(title: String, message : String, buttonTitle1: String, buttonTitle2: String,window: UIWindow){

   DispatchQueue.main.async {

    // create the alert
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)

    // add the actions (buttons)
    alert.addAction(UIAlertAction(title: buttonTitle1, style: UIAlertActionStyle.default, handler: { action in
        if let url = URL(string: "tel://\(self.phoneNumber.text)") {
            UIApplication.shared.open(url, options: [:])
        }
    }))

    alert.addAction(UIAlertAction(title: buttonTitle2, style: UIAlertActionStyle.cancel, handler: nil))    

    // show the alert
    self.present(alert, animated: true, completion: nil)
   }
}