Ios 什么';使用loadNibNamed时,所有者的含义是什么?

Ios 什么';使用loadNibNamed时,所有者的含义是什么?,ios,objective-c,loadnibnamed,Ios,Objective C,Loadnibnamed,Apple Doc说,nib文件中最重要的对象之一是文件的所有者对象,但似乎是nib文件中的文件所有者,而不是通过LoadNibName方法设置的所有者。我想知道他们之间有什么区别 以下是一个例子: 我从xib定制了alertView,并提供了如下静态类方法: +(CustomAlert *)sharedAlert{ CustomAlert *alert = [[[NSBundle mainBundle] loadNibNamed:@"CustomAlert" owner:nil opt

Apple Doc说,nib文件中最重要的对象之一是文件的所有者对象,但似乎是nib文件中的文件所有者,而不是通过
LoadNibName
方法设置的所有者。我想知道他们之间有什么区别

以下是一个例子:

我从xib定制了alertView,并提供了如下静态类方法:

+(CustomAlert *)sharedAlert{
    CustomAlert *alert = [[[NSBundle mainBundle] loadNibNamed:@"CustomAlert" owner:nil options:nil]lastObject];
    return alert;
}
我有一种在视图中显示警报的方法

- (void)showInView:(UIView *)view{
    [view addSubview:self];
}
在我的viewController中:

- (IBAction)buttonPressed:(id)sender{
    CustomAlert *alert = [CustomAlert sharedAlert];
    [alert showInView:self.view];
}

它在我的情况下运行良好,因此是否需要在
[[NSBundle mainBundle]loadNibNamed:owner:options:

假设您有一个带有tableview的nib文件,tableview委托和数据源连接到“files owner”在interface builder中。如果将文件所有者设置为任何对象,则该对象将是tableview的数据源和委托。这对连接到文件所有者的任何对象都有效。

我知道文件所有者在nib文件中很重要,但我想知道它在
[[NSBundle mainBundle]中的含义loadNibNamed:owner:options:
,以及它在我的情况下工作的原因。这是相同的意思,您的CustomAlert是UIAlertView或UIButton的子类吗?如果是alertview,您如何设置委托?如果是UIButton,您如何添加目标?在这两种情况下,如果您是以编程方式执行此操作,则不需要文件的所有者。因此,您需要什么ean是CustomAlert的文件的所有者是CustomAlert类,因为我将目标添加到CustomAlert类?不,它没有“文件所有者”,也不需要,因为您以编程方式添加目标不需要“文件所有者”。因此,当在xib和用户
[[[NSBundle mainBundle]loadNibNamed:owner:options:
来初始化它。