IOS提供了3种内省方法
- isKindOfClass
检查当前实例是否为某类及其子类
1 UIView *b = [UIView new]; 2 //... 3 4 id a = b; 5 6 if ([a isMemberOfClass:[UIView class]]) { 7 UIView *view = (UIView *)a;//强制转换 8 //利用UIView的方法... 9 } 10 11 if ([a isKindOfClass:[UIView class]]) { 12 13 } 14
- isMemberOfClass
检查当前实例是否为某类(不包括子类)
类似于isKindOfClass
- respondsToSelector
检查当前实例是否能对指定选择子做出响应,即是否存在指定函数
常用于检测委托是否实现了委托方法
1 id<xxxdelegate> a; 2 3 if ([a respondsToSelector:@selector(delegateFun:)]) 4 { 5 [a delegateFun:param1 Param:param2]; 6 }