SEL
選擇器用作 Objective-C 中的方法識別符號。
在下面的示例中,有兩個選擇器。new
和 setName:
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];
}