什么是iOS-Xcode中的文件所有者和第一响应者?


Answers:


170

文件所有者是一个实例化的运行时对象,在加载该笔尖时拥有该笔尖的内容及其出口/动作。它可以是您喜欢的任何类的实例-查看工具选项板的Identity选项卡。

文件所有者是应用程序代码与nib文件内容之间的主要链接。

例如,假设您有一个带有UILabel的IBOutlet的UIViewController子类。在界面生成器中,文件的所有者将设置为与UIViewController相同的类。当您的笔尖在运行时加载时,您的笔尖中定义的出口和动作的绑定将绑定到视图控制器的实例,因为视图控制器是所有者。

笔尖通过以下方式加载:

[[NSBundle mainBundle] loadNibNamed:@"NibName" owner:nil options:nil];

owner参数尤其重要。那是一个类的运行时实例,该类拥有正在加载的笔尖的内容(出口,动作和对象)。

希望这很清楚。为了在工作中看到这一点,请创建一个带有视图控制器的全新iPhone项目。打开Nib文件,然后查看“身份”选项卡。

第一响应者只是响应者链中可以响应事件的第一个对象。响应者链是可以响应事件的对象的运行时集合(或更准确地说是层次结构)。例如,假设您有一个带有视图的窗口,并且在该视图上是一个文本字段。

如果该文本字段具有焦点,则称为链中的第一响应者。因此,如果您将消息发送给第一响应者,则将其首先发送到文本字段。如果文本字段无法处理消息,它将发送给下一个响应者。接下来。接下来,直到到达响应者链的末尾或某些东西消耗了事件(iirc)。

响应者链值得一读-有关更多信息,请访问Apple的文档。


1
@dannywartnaby:详细说明!+1
Jayprakash Dubey 2015年

1
很好的解释!
TMin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.