SEL

选择器用作 Objective-C 中的方法标识符。

在下面的示例中,有两个选择器。newsetName:

Person* customer = [Person new];
[customer setName:@"John Doe"];

每对括号对应一条消息发送。在第一行,我们向 Person 类发送包含 new 选择器的消息,在第二行,我们发送包含 setName:选择器和字符串的消息。这些消息的接收者使用选择器来查找要执行的正确操作。

大多数情况下,使用括号语法传递消息就足够了,但有时你需要使用选择器本身。在这些情况下,SEL 类型可用于保存对选择器的引用。

如果选择器在编译时可用,则可以使用 @selector() 获取对它的引用。

SEL s = @selector(setName:);

如果需要在运行时找到选择器,请使用 NSSelectorFromString。

SEL s NSSelectorFromString(@"setName:");

使用 NSSelectorFromString 时,请确保将选择器名称包装在 NSString 中。

它通常用于检查委托是否实现了可选方法。

if ([self.myDelegate respondsToSelector:@selector(doSomething)]) {
    [self.myDelegate doSomething];
}