精确的类匹配,而不是匹配任何继承类,你就可以使用isMemberOfClass:方法。
isKindOfClass:会在消息接收者是指定类及其子类的实例的情况下返回YES
- for(BaseClass* base in myArray) {
- if([base isKindOfClass:[ClassOne class]]) {
- // do stuff specific to ClassOne
- } else if([base isKindOfClass:[ClassTwo class]]) {
- // do stuff specific to ClassTwo
- } else if([base isKindOfClass:[ClassThree class]]) {
- // do stuff specific to ClassThree }
- // etc }
检查是否符合协议 和实例检查类似,你可以测试一个对象是否符合特定的协议
检查你需要的方法是否存在。这就需要respondsToSelector:方法
- BOOL conforms = [obj conformsToProtocol:@protocol(MyInterface)];
- if([obj respondsToSelector:@selector(aMethod:)])
- { // it's there, so we can call it [obj aMethod:YES];
- }