1. UINavigationController *rnc = self.app.window.rootViewController;
我收到警告不兼容的指针类型使用UIViewController类型的表达式初始化UINavigationController
2. UINavigationController *rnc = (UINavigationController *)self.app.window.rootViewController;
选项1显示警告"不兼容的指针类型使用UIViewController类型的表达式初始化UINavigationController"而选项2则没有。为什么?如果我不在选项2中投票,会有什么风险?
已更新
将UIViewController转换为UINavigationController有什么风险?
答案 0 :(得分:1)
警告很清楚。在案例1中,rootViewController
的类型为UIViewController
,您将UIViewController
实例提供给UINavigationController
。
在第2种情况下,您正在进行转换以将UIViewController
转换为UINavigationController
,因此编译器未发出任何警告。
您不应该尝试将UIViewController
转换为UINavigationController
。它们都不同。 UINavigationController
是UIViewController
的子类。
如果您想将rootViewController
嵌入导航控制器中,那么您应该执行以下操作:
YourRootViewController *rootViewController = self.app.window.rootViewController;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];