1. UINavigationController *rnc = self.app.window.rootViewController;我得到警告不兼容的指针类型,使用UIViewController类型的表达式初始化UIViewController。
2. UINavigationController *rnc = (UINavigationController *)self.app.window.rootViewController;选项1显示警告“使用UIViewController类型的表达式初始化UIViewController的不兼容指针类型”,选项2则不显示。为什么?如果我不像备选方案2那样进行强制转换,风险是什么?
更新
将UIViewController转换为UINavigationController的风险是什么?
发布于 2015-12-05 17:56:55
警告很清楚。在案例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];https://stackoverflow.com/questions/34108787
复制相似问题