2011-11-15 37 views
1

在apple文档中,它指出nsapplication是主要笔尖的文件所有者。这是由模板设置还是必须装载第一个笔尖,以这种方式加载?文件所有者和nsapplication,appdelegate

此外,我通读了关于文件所有者的其他帖子,还有一些令我困惑。如果Iboutlet是nibs文件所有者的属性,并且在该nib内找到该对象,IBoutlets是否只能指向对象?为什么笔尖甚至需要知道它的所有者的类除了对象?什么是知道或不知道这个启用或禁用?

还有一个,appdelegate在哪里适合这张图片?你甚至可以更改应用程序委托吗?

感谢:-)

+0

看看这个[Apple Doc - 创建你的第一个iOS应用程序](http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iPhone101/Articles/00_Introduction.html#//apple_ref/ DOC/UID/TP40007514);特别是关于*了解基本设计模式*的部分。它解释了代表团,视图控制器等事情。 – chown

+1

我的理解和说明一样多,我没有得到的是细节 – rubixibuc

回答

9

Xcode的应用程序模板设置MainMenu.xib用来装载NSApp作为其所有者。这是通过NSApplicationMain函数完成的。 NSApplicationMain在应用的Info.plist文件中查找NSMainNibFile密钥。如果找到该键,它将使用相应的值作为要加载的nib文件的名称。 Xcode的应用程序模板将NSMainNibFile设置为MainMenu

它不必这样做。您可以更改或删除Info.plist中的NSMainNibFile条目。你甚至可以使用而不是使用NSApplicationMain。相反,您可以自己初始化NSApp(通过调用[NSApplication sharedApplication]),然后以编程方式或通过加载nib来创建用户界面,然后致电[NSApp run]

笔尖加载器只能将插口连接到它所加载的笔尖或文件的所有者,第一响应者或应用程序中的对象。出口本身不必位于文件所有者;它可以放在笔尖上的任何物体上。

当您设置文件所有者的类时,Interface Builder将扫描您的源代码以查找该类的声明。这就是它知道文件所有者应该拥有哪些出口和行为的方式。

应用程序委托通常是应用程序的顶级控制器。当发生各种应用程序级事件时会通知它。看看NSApplicationDelegate Protocol Reference

在Xcode的应用程序模板,应用程序委托是在MainMenu.xib一个对象(可以在笔尖非用户界面对象),这是连接到文件所有者的delegate插座。不管你想要什么,你都可以修改这个类。你甚至可以完全从笔尖删除对象。但任何认真的应用程序都需要一个应用程序委托。

+0

谢谢你的帮助,我只是想确保我理解一些东西:可以在一个笔尖内访问(连接和连接),该笔尖内的对象和代理对象?如果是这样,为什么这个限制设置? – rubixibuc