方法選擇器
-
選擇器的生成
- 第一種方法,在編譯階段
SEL sel = @selector(eat); // 包裝eat方法
- 第二種方法,在運行時
SEL sel = NSSelectorFromString(@"eat"); //字符串是方法名
-
判斷一個方法是否實現(多用在代理中)
- 如果用對象調用respondsToSelector,判斷的是對象方法
- 如果用類調用respondsToSelector, 判斷的是類方法
BOOL flag = [p1 respondsToSelector:sel]; //判斷eat方法有沒有實現
-
方法的調用
- 使用以selector為參數的performSelector:的方法并且其他類似的方法
if (flag) { [p1 performSelector:sel]; }
- 注意點:
- 如果通過performSelector調用有參數的方法, 那么參數必須是對象類型,并且最多只能傳入兩個參數
- 可以調用私有的方法(在.m中只有實現的方法)