在这种情况下,XIB 中文件的所有者是什么?

What is File’s owner in XIB in this case?

找了好久类似的问题,大部分都提到了UIViewController的xib的东西。 我尝试为我的自定义viewController模型添加一个xib文件,发现它的Xib文件的所有者应该是我的自定义viewController模型的class--这是合理的。但是为什么当我为我的 UIView 模型创建一个 xib 时情况不同-- 一个例子如下:

我创建了名为 "KWView"(KWView.h 和 KWView.m)的 UIView 模型 然后我为这个模型创建 xib,通过

初始化它
 KWView *oneView = [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil ]lastObject];

这个Xib的File's Owner name是“NSObject”(然后我再试试其他的,无论我选择什么,它运行顺利),在那里,我选择视图的自定义Class作为“KWView”[这个xib命名为"KWView.xib"]

问题是:

1.Whatever 我更改了自定义视图的 Xib 文件所有者名称,它有效。如果是这样,这个文件的所有者在这里做了什么工作,或者说,为什么会这样?

2.Generally,我应该把自定义view的Xib's File's Owner设置成我自定义view的class还是viewController的class视图将被添加到?或者直接设置 "NSObject"?

您问题的答案取决于您打算如何在 nib 加载时从 nib 中提取视图。正如您向我们展示的那样,您将提取它,如下所示:

KWView *oneView = 
    [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil]
        lastObject];

这意味着您在这里没有使用 owner: — 它是 nil。因此,您可以将 nib 文件的所有者保留在 NSObject。

File's Owner 的目的是允许您在 nib 中建立视图(或其子视图)和将成为 真实[=21 的对象之间的 Action 和 Outlet 连接=] 加载时的所有者——就像视图控制器(所有者)及其 view(视图控制器的主视图)。但在你的情况下,没有这样的真正所有者,也没有这样的 Action 或 Outlet 连接。