文件所有者在xcode xib文件中的需求是什么?没有文件所有者,我可以做同样的事情吗?

Mar*_*tos 5 xcode objective-c xib nib

为什么我应该设置文件所有者的类标识而不是笔尖中显示的自定义对象的类标识并从中进行连接?如果我将文件的所有者设置为nil会发生什么?对我来说,nil文件的所有者一切正常,那么从它做连接的顺从是什么?

Ken*_*ses 11

NIB表示存档的对象图.您可以加载它,然后重构该对象图.事情上,您通常希望/需要将新加载的对象图挂钩到程序的现有对象图中.你不希望它分开,与其他一切断开.

新加载的对象图可以通过几种方式连接到程序对象图的其余部分.一种方法是NIB中可用的代理对象集.应用程序对象有一个.另一个这样的代理对象是文件的所有者.代理对象是在NIB中具有表示但实际上不包含在NIB中的事物.与NIB中的其他对象不同,代理表示的对象在加载NIB时不会创建,它们在加载NIB之前存在.代理允许这些预先存在的对象与NIB中的对象之间的连接.这就是NIB中的新对象图如何连接到程序的现有对象图.

MainMenu NIB很不寻常.它在应用程序启动时由Cocoa自动加载,这意味着预先存在的对象没有(不可能,真的)很多.NIB通常还包含app delegate的实例,它是一种协调控制器.但是,通常,其他类型的NIB不包含协调控制器.(它们确实包含中介控制器,NSArrayController但不同之处.)相反,协调控制器通常是在代码中创建的,通常它们负责加载NIB.

例如,您可以使用an NSWindowController作为窗口的协调控制器.该窗口将在NIB中定义.窗口控制器将在代码中实例化 - 无论哪个代码决定应该创建一个窗口 - 它将加载NIB.它也是NIB的文件所有者.它将管理窗口和NIB的顶级对象.

如果要将文件所有者设置为nil,则a)此时您可能正在处理非常简单的NIB,并且b)您可能正在从您加载的NIB中泄漏顶级对象.


pas*_*aya 7

文件所有者是包含该视图的所有IBOutlet和IBActions的文件.例如,如果你有一个"ViewController"类,它包含一个IBOutlet UIButton *button-(IBAction)changeViewWhenButtonPressed: (id) sender,你可以连接插座和动作的唯一方法是将"ViewController"设置为你视图的文件所有者.

我相对确定Class Identity是File的Owner的同义词.

此外,这些链接可能会有所帮助:

什么是iPhone SDK中的文件所有者和第一响应者 - xCode?

文件的所有者定义

什么是文件的所有者