关于Objective-c反射

来源:互联网 发布:mac文件夹消失 编辑:程序博客网 时间:2024/06/03 22:02

精确的类匹配,而不是匹配任何继承类,你就可以使用isMemberOfClass:方法。

isKindOfClass:会在消息接收者是指定类及其子类的实例的情况下返回YES

  1. for(BaseClass* base in myArray) {  
  2. if([base isKindOfClass:[ClassOne class]]) {  
  3. // do stuff specific to ClassOne  
  4. } else if([base isKindOfClass:[ClassTwo class]]) {  
  5. // do stuff specific to ClassTwo  
  6. } else if([base isKindOfClass:[ClassThree class]]) {  
  7. // do stuff specific to ClassThree }  
  8. // etc }

检查是否符合协议 和实例检查类似,你可以测试一个对象是否符合特定的协议

  1. BOOL conforms = [obj conformsToProtocol:@protocol(MyInterface)];
检查你需要的方法是否存在。这就需要respondsToSelector:方法

  1. if([obj respondsToSelector:@selector(aMethod:)])   
  2. { // it's there, so we can call it [obj aMethod:YES];  
  3.  }

原创粉丝点击