Objective C预处理器/编译器/Iphone SDK在幕后做什么?

Objective C预处理器/编译器/Iphone SDK在幕后做什么?,iphone,Iphone,我确实看过像这样的教程 它们很好,但它们只是描述了配方,所以我仍然不理解幕后发生的逻辑: 当从接口生成器拖动到文件所有者时,Objective C预处理器/编译器/Iphone SDK会做什么。为什么命名为“文件所有者”?文件所有者是加载xib的实例。这就是为什么它被称为文件所有者。 正是运行时将反序列化对象链接到所有者。请考虑如果以编程方式创建UIView子类,您可能会做些什么 在某个.m文件中的子类init方法中,可以分配一个按钮 然后通过一些属性设置器将该按钮分配给初始化对象中的实例变量

我确实看过像这样的教程

它们很好,但它们只是描述了配方,所以我仍然不理解幕后发生的逻辑:


当从接口生成器拖动到文件所有者时,Objective C预处理器/编译器/Iphone SDK会做什么。为什么命名为“文件所有者”?

文件所有者是加载xib的实例。这就是为什么它被称为文件所有者。
正是运行时将反序列化对象链接到所有者。

请考虑如果以编程方式创建UIView子类,您可能会做些什么

在某个.m文件中的子类init方法中,可以分配一个按钮

然后通过一些属性设置器将该按钮分配给初始化对象中的实例变量

然后,您可以在该类文件中添加一个方法作为选择器来处理该按钮的控制事件

Interface builder正在尝试将运行时所需的信息保存在压缩对象表示(xib文件)中,以便为您执行所有这些操作

SDK和/或预处理器为Interface Builder提供了在.h和.m文件中特别标记的实例变量和方法的列表

文件所有者告诉IB在.m和.h文件中查找和使用哪个类名

拖动的IBOutlets告诉运行时在该类中进行哪些属性分配

拖动的iActions会告诉运行时要为该类中的各种控制操作设置哪些选择器。

然后是后续问题:)