从XCode 4.2开始,当您使用XCode 4.2创建一个空项目时,不再创建并连接MainWindow.xib。我发现了一篇文章,描述了如何做到这一点,我已经完成了它并且它有效,但是如果这个过程教会了我什么,它告诉我,我不知道main(),AppDelegate和MainWindow是怎么回事。 xib一起存在。
http://www.trappers.tk/site/2011/06/16/mainwindow-xib/
我已经研究过但是,我仍然不能100%确定应用程序启动后所有内容是如何加载的,为什么只需拥有一个MainWindow就可以进行设置。我有一种感觉,虽然我应该把所有这些概念都放下来继续推进iOS开发。
答案 0 :(得分:4)
在最低级别,使用方法加载nib文件 - [UINib instantiateWithOwner:options:]。 nib文件中的文件所有者是占位符。在Xcode中,它还不是一个特定的对象。加载nib文件时,它将解析为实际对象。其目的是通过出口和动作将笔尖内的对象与加载笔尖的对象相关联。作为该UINib方法的“instantiateWithOwner:”参数传递的对象是Interface Builder中文件所有者占位符将解析为的对象。
UIApplication加载info.plist中指定的nib文件,并在加载nib文件时为owner参数传递'self'。
通过设置班级名称,您只需要提示工具,以便他们可以建议您允许建立的一系列操作和出口。
当你将通用对象放在xib中并将其类更改为'AppDelegate'时,你告诉Xcode在加载文件时实例化一个'AppDelegate'实例。
UIApplication有一个'委托',它委派责任并在有趣事件发生时通知。进行此连接时,您将应用程序的委托属性设置为上面指定的实例。从那时起,此实例将从UIApplication接收委托消息,如-application:didFinishLaunchingWithOptions:。
Outlets是一种引用xib内部对象的方法。它们使属性或实例变量设置为引用插座指向的对象。当您创建此插座时,您正在创建它,以便您在上面创建的应用委托实例有一种方法来引用在加载xib时也创建的窗口。
它代表了以代码为中心的方式来执行xib中发生的一些相同的事情,如果它们都存在,它们将相互覆盖。
答案 1 :(得分:0)
放置在XIB文件上的对象是AppDelegate,因为它委托Interface Builder中的所有连接,这意味着如果您编写的方法在单击按钮时显示文本,该方法将连接到App Delegate或文件的所有者,最好是代表。文件所有者,因为它是UIApplication,连接到委托,因为它将某个对象指定为App Delegate。很抱歉,我无法回答你的其他问题,但这些问题确实没有用。
希望这有帮助