【发布时间】:2015-12-05 17:48:06
【问题描述】:
1. UINavigationController *rnc = self.app.window.rootViewController;
我收到警告使用 UIViewController 类型的表达式初始化 UINavigationController 的指针类型不兼容
2. UINavigationController *rnc = (UINavigationController *)self.app.window.rootViewController;
选项 1 显示警告“使用 UIViewController 类型的表达式初始化 UINavigationController 的指针类型不兼容”,选项 2 不显示。为什么 ?如果我不像选项 2 那样施放,会有什么风险?
更新
将 UIViewController 转换为 UINavigationController 有什么风险?
【问题讨论】:
-
@adobels 风险在于
window上的rootViewController实际上不是UINavigationController*(或子类)的实例,并且您的应用程序在运行时崩溃。 Swift 通过要求以rnc = window.rootViewController as! UINavigationController的形式进行强制转换来缓解这个问题。 “演员表”(实际上并不是演员表)将在运行时进行检查。
标签: objective-c uiviewcontroller uinavigationcontroller