2011-09-10 45 views
3

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

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

  • 为什么MainWindow.xib中类更新的UIApplication?
  • 为什么放置在xib上的对象,然后为类选择AppDelegate类?
  • 为什么File Owner的委托出口连接了AppDelegate对象?
  • 为什么AppDelegate窗口到窗口?
  • 为什么 - (BOOL)application:didFinishLaunchingWithOptions:需要注释掉。

我已经研究过,但我仍然不是100%确定一旦应用程序启动时如何加载所有内容,以及为什么需要安装MainWindow。我有一种感觉,尽管我应该把所有这些概念都放在iOS开发中继续前进。

回答

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'的实例。

  • 为什么File Owner的委托出口连接了AppDelegate对象?

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

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

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

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

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

+0

棒极了!只是几个简单的说明。由于AppDelegate主要用于委托从UIApplication接收“事件”的责任,这是否意味着应用程序只有一个AppDelegate类?另外,MainWindow.xib是实例化AppDelegate和任何其他对象(如控制器类)的“东西”? – 5StringRyan

+0

是的,应用程序将只有一个应用程序委托类。 UIApplication是一个单例,'delegate'属性只包含一个对象。 “另外,MainWindow.xib是实例化AppDelegate和其他任何对象(如控制器类)的”东西“?”这是做这件事的一种方式,这是它在这个项目中所做的,但还有其他的方法。例如,将委托类名称传递给UIApplicationMain()并实例化应用程序中剩余的对象:didFinishLaunchingWithOptions :. –

0

放置在XIB文件上的对象是AppDelegate,因为它委托了Interface Builder中的所有连接,这意味着如果您编写的方法在单击按钮时显示文本,则该方法将连接到App Delegate或文件的所有者,最好是代表。文件的所有者,因为它是UIApplication,所以连接到委托,因为它将某个对象分配给应用程序委托。对不起,我无法回答你的其他问题,他们没有任何意义。

希望这有助于

+0

是的大部分问题都是基于我提供的链接,它提供了“连接”MainWindow.xib的一步一步的指令,但令人讨厌的是,这并不能解释为什么或者如何理解这个if你是独立的。 – 5StringRyan

+0

我知道,起初我很难,但只需要一些练习来真正了解发生了什么。祝你好运! – 2011-09-10 03:07:17

相关问题