如何将MainWindow.xib连接到空项目

时间:2011-09-10 00:46:21

标签: objective-c xcode delegates uiapplication

从XCode 4.2开始,当您使用XCode 4.2创建一个空项目时,不再创建并连接MainWindow.xib。我发现了一篇文章,描述了如何做到这一点,我已经完成了它并且它有效,但是如果这个过程教会了我什么,它告诉我,我不知道main(),AppDelegate和MainWindow是怎么回事。 xib一起存在。

http://www.trappers.tk/site/2011/06/16/mainwindow-xib/

  • 为什么将MainWindow.xib类更新为UIApplication?
  • 为什么对象放在xib上,然后为该类选择了AppDelegate类?
  • 为什么文件所有者的代理出口连接了AppDelegate对象?
  • 为什么AppDelegate的窗口出口到窗口?
  • 为什么 - (BOOL)应用程序:didFinishLaunchingWithOptions:需要被注释掉。

我已经研究过但是,我仍然不能100%确定应用程序启动后所有内容是如何加载的,为什么只需拥有一个MainWindow就可以进行设置。我有一种感觉,虽然我应该把所有这些概念都放下来继续推进iOS开发。

2 个答案:

答案 0 :(得分:4)

  • 为什么将MainWindow.xib类更新为UIApplication?

在最低级别,使用方法加载nib文件 - [UINib instantiateWithOwner:options:]。 nib文件中的文件所有者是占位符。在Xcode中,它还不是一个特定的对象。加载nib文件时,它将解析为实际对象。其目的是通过出口和动作将笔尖内的对象与加载笔尖的对象相关联。作为该UINib方法的“instantiateWithOwner:”参数传递的对象是Interface Builder中文件所有者占位符将解析为的对象。

UIApplication加载info.plist中指定的nib文件,并在加载nib文件时为owner参数传递'self'。

通过设置班级名称,您只需要提示工具,以便他们可以建议您允许建立的一系列操作和出口。

  • 为什么对象放在xib上,然后为该类选择了AppDelegate类?

当你将通用对象放在xib中并将其类更改为'AppDelegate'时,你告诉Xcode在加载文件时实例化一个'AppDelegate'实例。

  • 为什么文件所有者的代理出口连接了AppDelegate对象?

UIApplication有一个'委托',它委派责任并在有趣事件发生时通知。进行此连接时,您将应用程序的委托属性设置为上面指定的实例。从那时起,此实例将从UIApplication接收委托消息,如-application:didFinishLaunchingWithOptions:。

  • 为什么AppDelegate的窗口出口到窗口?

Outlets是一种引用xib内部对象的方法。它们使属性或实例变量设置为引用插座指向的对象。当您创建此插座时,您正在创建它,以便您在上面创建的应用委托实例有一种方法来引用在加载xib时也创建的窗口。

  • 为什么 - (BOOL)应用程序:didFinishLaunchingWithOptions:需要被注释掉。

它代表了以代码为中心的方式来执行xib中发生的一些相同的事情,如果它们都存在,它们将相互覆盖。

答案 1 :(得分:0)

放置在XIB文件上的对象是AppDelegate,因为它委托Interface Builder中的所有连接,这意味着如果您编写的方法在单击按钮时显示文本,该方法将连接到App Delegate或文件的所有者,最好是代表。文件所有者,因为它是UIApplication,连接到委托,因为它将某个对象指定为App Delegate。很抱歉,我无法回答你的其他问题,但这些问题确实没有用。

希望这有帮助