文件所有者和nsapplication,appdelegate

时间:2011-11-15 02:04:59

标签: objective-c xcode

在苹果文档中,它声明nsapplication是主笔尖的文件所有者。这只是由模板设置还是必须加载第一个笔尖,以这种方式加载?

另外,我阅读了关于文件所有者的其他帖子,但仍然让我感到困惑。如果Iboutlet是nibs文件所有者的属性,并且该对象在该nib中找到,那么IBoutlet是否只能指向对象?为什么笔尖甚至需要知道它的所有者的类除了对象?通过知道或不知道这个来启用或禁用什么?

还有一个,appdelegate在哪里适合这张照片?你甚至可以改变应用代表吗?

谢谢: - )

1 个答案:

答案 0 :(得分:9)

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

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

nib加载程序只能将插座连接到正在加载的nib中的对象,或者连接到File的Owner,First Responder或Application。插座本身不一定是文件所有者;它可以在笔尖中的任何对象上。

当您设置File的所有者类时,Interface Builder会扫描您的源代码以查找该类的声明。这就是它如何知道文件所有者应该拥有哪些出口和动作。

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

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