首先,我昨天以不同的方式问了这个问题。经过更多的实验,我仍然不清楚“为什么”。我明白我需要做什么,但想弄清楚发生了什么。这是场景……</p>
我从一个干净的石板开始,一个单一的视图应用程序,只需将以下 NSLog 添加到 appDelegate ......</p>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"%@",[self.window.rootViewController description]);
return YES;
}
以上返回
<ViewController: 0x17e7dbf0>
现在,当我创建一个名为“TestViewController”(UIViewController 类型)的新类并将其分配给我的故事板中的控制器时,上面的 NSLog 返回
<TestViewController: 0x146594c0>
所以,我的问题是,“如果前面的描述显示 rootViewController 的类型是”TestViewController,为什么我需要类型转换(TestViewController *)?为什么我不能这样做……
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
TestViewController *tvc = self.window.rootViewController;
return YES;
}
代替...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
TestViewController *tvc = (TestViewController*)self.window.rootViewController;
return YES;
}
我想在这里消除迷雾。我错过了哪一块拼图?
谢谢你的帮助!