方法选择器
-
选择器的生成
- 第一种方法,在编译阶段
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中只有实现的方法)
网友评论