選擇器(Selector)
OC中使用(selector)和 block(代碼塊)傳遞函數
SEL和id以及Class等都是OC裡的資料類型,和int、float的地位一樣。SEL變量可以存儲selector資料。
可以通過@selector來擷取某方法的selector。
SEL afun = @selector(someMethodName:::::);
執行個體對象可以通過performSeletor方法來調用SEL方法。
【特點】
1、是一種資料類型SEL
2、SEL類型的變量用于存放方法的
【使用】
1、建立SEL類型的變量
//定義SEL類型的變量(編譯時)
SEL sel = @selector(eat);
//動态的建立SEL變量(運作時)
SEL sel2 = NSSelectorFromString(@"eat");
//在執行時直接建立SEL變量沒有警告
[cat performSelector:@selector(eat)];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
//這樣使用會有警告,加上外面語句可以忽略
[cat performSelector:sel2];
#pragma clang diagnostic push
//通過selector調用方法時,若方法沒有實作會導緻崩潰
2、判斷某個類是否實作了selector中的方法
//判斷對象所屬的類是否實作了selector中的方法
[cat respondsToSelector:sel2]