我在这里遇到了一个非常奇怪的情况 - 调用该方法 UINAvigationController -> setViewControllers:animated:
会导致应用程序崩溃。仅在 iOS 10.3.2 以及我在发布模式下构建应用程序时才会发生这种情况。
我收集了更多细节。希望他们能帮助了解发生了什么。
该问题仅在 iOS 10.3.2 和发布模式下出现。我已经在 10.3.2 的 iPhone 上检查了这一点,发布构建失败,但调试工作正常。此外,我在 iOS 10.3.2 上的 AppStore 中检查了该应用程序的早期版本,也可以。调试和发布版本在所有早期版本的 iOS 上都可以正常工作。
AppStore 中以前的版本是用旧版本的 Xcode 构建的,现在我使用的是最新的 Xcode 8.3.2。我想这是系统问题,与 iOS 和 Xcode 版本有关。
关于来源,它看起来像:
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
...
window = UIWindow(frame: UIScreen.main.bounds)
....
let navigationController = UINavigationController(rootViewController: viewController)
window.rootViewController = navigationController
window.makeKeyAndVisible()
}
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
...
continueButton.addTarget(self, action: #selector(navigateForward), for: .touchUpInside)
...
}
func navigateForward(sender: UIButton!) {
let nextController = FinalBuilder.viewController()
navigationController?.setViewControllers([nextController], animated: true)
}
我之前说过,它在所有情况下都可以正常工作,除了一种:)。UINAvigationController -> setViewControllers:animated:
是标准的 iOS 方法,可从 iOS 3.0+ 开始使用,现在不推荐使用。没有黑客或其他可以破坏程序流程的东西。这是通常的使用方式。
PS 没有调试日志或任何其他我可以为您提供的消息,因为该应用程序只是从屏幕上消失,根本没有任何通知。