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];
}