天天看點

OC學習--選擇器(Selector)

選擇器(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]

oc