3

从 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类?
  • 为什么File Owner的delegate outlet连接了AppDelegate对象?
  • 为什么 AppDelegate 的窗口出口是窗口?
  • 为什么 - (BOOL) application:didFinishLaunchingWithOptions: 需要被注释掉。

我已经进行了研究,但是我仍然不能 100% 确定一旦应用程序启动,所有内容是如何加载的,以及为什么只需要设置一个 MainWindow。我有一种感觉,我可能应该了解所有这些概念,以便继续推进 iOS 开发。

4

2 回答 2

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

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

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

通过设置类名,您只是在提示工具,以便它们可以建议您允许建立的一组操作和出口。

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

当您将通用对象放入 xib 并将其类更改为“AppDelegate”时,您是在告诉 Xcode 在加载文件时实例化“AppDelegate”的实例。

  • 为什么File Owner的delegate outlet连接了AppDelegate对象?

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

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

出口是一种引用 xib 内部对象的方法。它们导致属性或实例变量被设置为引用出口指向的对象。当您创建这个插座时,您正在制作它以便您在上面创建的应用程序委托实例有一种方法可以引用在加载 xib 时也创建的窗口。

  • 为什么 - (BOOL) application:didFinishLaunchingWithOptions: 需要被注释掉。

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

于 2011-09-10T09:27:35.390 回答
0

放置在 XIB 文件上的对象是 AppDelegate,因为它代表 Interface Builder 中的所有连接,这意味着如果您编写一个方法,当单击按钮时它会显示文本,该方法将连接到 App Delegate 或文件的所有者,最好是代表。文件的所有者,因为它是 UIApplication,连接到委托,因为它将特定对象分配为应用委托。抱歉,我无法回答您的其余问题,它们没有真正的意义。

希望这可以帮助

于 2011-09-10T02:30:56.593 回答