我刚刚开始进行iPhone开发(来自.Net世界)并且已经经历了许多“Hello World”应用程序以获得这个新开发平台的支持。我一直困惑的一个领域是视图控制器的实例化。在Apple“Hello World”教程中,他们首先创建一个基于Window的应用程序,默认情况下它没有视图控制器。然后,他们创建一个UIViewController并在应用程序委托中手动实例化该控制器,然后简单地将视图控制器添加到窗口(http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/03_AddingViewController.html#//apple_ref/doc/uid/TP40007514-CH5-SW5)。
相反,如果我要创建一个新的“基于视图的应用程序”项目并查看委托实现,那么将该视图控制器链接到主窗口所做的就是以下行: [window addSubview:viewController.view];
为什么教程表明我必须通过alloc / init手动实例化视图控制器,当预构建的“基于视图的应用程序”模板只是将视图控制器视图添加到窗口时?这两者有什么区别?
答案 0 :(得分:2)
通过进行更多挖掘,我找到了自己问题的答案。创建基于视图的应用程序时,您会注意到如果双击MainWindow.xib,文档窗口中的一个对象是一个已连接到[ProjectName] ViewController类的视图控制器(一个类在您选择基于视图的应用程序时自动创建。
因此,通过将视图控制器从库中拖动到MainWindow.xib中的文档窗口,您实质上是在实现该对象(尽管它存档在nib文件中)。因此,无需在应用程序委托中手动实例化它。只需将视图控制器的视图添加到窗口即可。