标签:
SEL 类型是用来描述一个方法的,可以理解为SEL是方法的指针.该SEL类型类似于Java中的Method类。
OC中可以通过两种方法来获得SEL类型。
isKindOfClass 方法用来判断当前对象是否是一个类或者其子类的实例
[cat isKindOfClass: [Cat class]] ;
isKindOfClass 方法用来判断当前对象是否是一个类的实例 ( 不包括子类)
[cat isMemberOfClass: [Cat class]] ;
responseToSelector 方法用来判断当前对象能否响应指定方法
SEL catSay = NSSelectorFromString(@"say") ;
if ([cat respondsToSelector:catSay]){
[cat catSay] ;
}
performSelector 方法用来动态的执行一个方法
SEL catSay = NSSelectorFromString(@"say") ;
// 通过一个对象动态执行一个方法
[cat performSelector:catSay];
动态的执行一个方法并且传递参数。
// 通过一个对象动态执行一个方法,并且传递参数(参数最多只能两个,这是该performSelector方法的局限性)
[cat performSelector:catSay withObject:nil withObject:nil ] ;
instancesRespondsToSelector判断类的实例是否可以响应方法
SEL catSay = NSSelectorFromString(@"say") ;
// 这是一个类方法
[Cat instanceMethodForSelector:catSay] ;
isSubclassOfClass 判断当前类是否是指定类的子类。
// 这是一个类方法
[Cat isSubclassOfClass:NSObject class] ;
标签:
原文地址:http://www.cnblogs.com/mrwu/p/4331153.html