Objective-C 入门指南
1. 理解选择器
在 C 语言中,我们通过函数名来引用函数,函数名也可作为指向该函数的指针。当把 C 代码编译成汇编代码时,函数会变成一个标签,可通过调用指令或指令序列来访问。
而在 Objective-C 中,流程控制更加动态。我们可以获取方法的指针,但大多数时候,我们希望向对象发送特定的消息,而非调用特定的方法。如果调用特定的方法,我们必须确保接收者确实是我们期望的类。
在 C 语言中,我们经常使用函数指针作为其他函数的参数,被调用的函数会调用传递给它的函数,例如 C 标准库中的 qsort() 函数,它使用一个函数来定义数组元素之间的顺序。
在 Objective-C 版本中,我们可能希望通过向对象发送 -compare: 消息来比较对象,而不是使用函数指针。理想情况下,我们希望将要发送的消息名称传递给实现排序的方法。
消息的名称被称为选择器(selector),它是消息名称的抽象表示,类型为 SEL ,这是一种不透明类型。我们可以使用 @selector() 指令来创建选择器,它将消息名称的常量字符串表示转换为该消息名称的选择器。
以下是创建选择器的示例代码:
SEL new = @selector(new);
SEL set = @selector(setObject:forKey:);
选择器可用于按名称调用方法,Foundation 框架中的
超级会员免费看
订阅专栏 解锁全文
82

被折叠的 条评论
为什么被折叠?



