精确的类匹配,而不是匹配任何继承类,你就可以使用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];
- }
本文介绍了如何在Objective-C中精确地进行类匹配而非仅匹配其子类,使用isMemberOfClass:方法实现这一目标。此外,还介绍了如何检查对象是否符合特定协议、是否存在所需方法。
540

被折叠的 条评论
为什么被折叠?



