Сбой приложения без информации о сбое при переходе на другой контроллер представления - PullRequest
1 голос
/ 27 марта 2019

У меня есть два контроллера вида, LoginViewController и TermsAndPrivacyViewController.

На контроллере первого вида есть кнопка с IBAction, которая открывает TermsAndPrivacyViewController.На TermsAndPrivacyViewController у меня есть веб-просмотр, который загружает URL, который я передаю с LoginViewController.Итак, это код (Контроллер представления входа в систему):

 @IBAction func tosAction(_ sender: Any) {

        if let vc = UIStoryboard(name: "Login", bundle: nil).instantiateViewController(withIdentifier: kTOSViewControllerIdentifier) as? TermsAndPrivacyViewController{

            vc.url =  URL(string: kTOSUrl)
            self.navigationController?.pushViewController(vc, animated: true)

        }
    }

В TermsAndPrivacyViewController у меня есть это:

override func viewDidLoad() {
        super.viewDidLoad()

        webView.navigationDelegate = self
        if let `url` = url {
            webView.load(URLRequest(url: url))
            webView.allowsBackForwardNavigationGestures = true
        }
    }

Итак, когда я нажимаю кнопку, приложение вылетает SIGABRTсообщение, и ничего больше.Кроме того, я не получаю никакого отчета о сбое в Firebase Crashlytics (сначала я отсоединил приложение от отладчика и произвел сбой).

Теперь странная часть: / ... Если я поставлюТочка останова в первой строке метода tosAction(), и идти шаг за шагом (или просто позволить ей продолжить), все работает нормально.Без сбоев ???

Я что-то упускаю здесь очевидное?В чем причина сбоя?Также я пытался поставить Exception Breakpoint но ничего не меняется.Я получаю только это:

enter image description here

enter image description here

и консоль:

console image

Итак, вроде нет никакой информации о сбое вообще.

РЕДАКТИРОВАТЬ

Хорошо, теперь дажеболее странная часть :) Я только что попробовал приложение на разных телефонах.

Приложение вылетает на iPhone 6s +, iOS 12.1 (16B5059d), но работает нормально на iPhone 6, iOS 12.0 (16A366)

Ответы [ 3 ]

1 голос
/ 27 марта 2019

возможно, вы используете библиотеку или фреймворк, которые не поддерживаются этим устройством. вы должны увидеть ошибку

ты пробовал это?

при сбое приложения в консоли нажмите cmd + F и найдите исключение. теперь вы можете увидеть свою ошибку

надеюсь на помощь.

0 голосов
/ 27 марта 2019

Чтобы получить дополнительную информацию о сбоях этого типа, откройте меню точек останова (или нажмите CMD + 8), щелкните значок плюса в левом нижнем углу и нажмите Точка останова исключения ... .Щелкните правой кнопкой мыши, затем отредактируйте.Добавьте действие типа Команда отладчика и введите следующее:

enter image description here

Повторно воспроизведите сбой, на этот раз консоль будетвыведите более полезное сообщение об ошибке.

0 голосов
/ 27 марта 2019

Может быть, вы можете использовать методы segue внутри вашего LoginViewController.

 @IBAction func tosAction(_ sender: Any) {
        performSegue(withIdentifier: "GoToWeb", sender: nil)
    }
}

И позвони готовить для обсуждения

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (segue.identifier == "GoToWeb") {
            let vc = segue.destination as! TermsAndPrivacyViewController
            vc.url = "YOUR_URL"
        }

И код внутри TermsAndPrivacyViewController не меняется

Edit:

Возможно, вы плохо привязываете свою UIButton, можете ли вы проверить на правой панели в разделе «Показать инспектор соединений», если ваша кнопка вызывается только один раз.

...