1.SEL数据类型 SEL是个指针类型的数据,类似C语言中的函数指针.在OC中,每个对象方法都有其对应着一个SEL变量.当我们调用对象方法时,编译器会将该方法转换成一个SEL的数据,然后去类中寻找该方法对于的SEL.(这里涉及的深层原理本文没有深究,本文仅仅将SEL以及@selector的使用) 2.@selector的用法 @selector(方法名),该函数返回一个SEL类型的数据,因此可以这样使用.假设Person类中有一对象方法叫做run().而我们可以这样调用它: SEL f1 = @
1.SEL类型 例子: SEL say; SEL skin; Objective-C 在编译的时候, 会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个 ID,这个 ID 就是 SEL 类型的.我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的 ID 都是相同的.就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同 那么 ID 就是一样的. 在 程序执行的时候,我们可以方便的通过方法的名字,获取到方法的 ID 也就是我们所说的
SEL消息机制工作原理是什么 引用下面文章: 我们在之前有提到,一个类就像一个 C 结构.NSObject 声明了一个成员变量: isa. 由于 NSObject 是所有类的根类,所以所有的对象都会有一个 isa 的成员变量[公共继承].而该 isa 变量指向该对象的类(图3.15)[类在Objective-C中也是一个实体, 由于存在Objective-C 运行环境所有的类将有自己的存储空间.Objective-C 运行环境将为每个类分配空间. 这里 所说的 isa,正是指向这样一个类的空间.
现在我们看先看一个 官方地址https://www.sourceinsight.com/download/macro-files/中的 autoexp.em Automatically expands C statements like if, for, while, switch, etc.. /* A U T O E X P A N D */ /*-------------------------------------------------------------------------