【发布时间】:2017-05-26 07:59:23
【问题描述】:
我在这里遇到了一个非常奇怪的情况 - 调用 method 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+ 开始使用,现在不推荐使用。没有黑客或其他可以破坏程序流程的东西。并且是常用的使用方式。
附:没有调试日志或任何其他我可以为您提供的消息,因为该应用程序只是从屏幕上消失,根本没有任何通知。
【问题讨论】:
-
你能粘贴确切的崩溃错误信息吗?
-
没有错误信息。我在描述中提到过。
-
那么你是怎么知道
setViewControllers导致了崩溃的? -
因为没有这个调用就不会发生崩溃:)。如果我改用 pushViewController 方法,它可以正常工作。无论如何,我想出了问题的真正原因。感谢您的 cmets。
标签: ios swift uinavigationcontroller rx-swift rx-cocoa