1.判断一个实例是否是某个类(或者此类的子类/子子类...)的实例化:
[d isKindOfClass:[Dog class]] ;//d为实例化的对象,后面为判断是否是此类(或者此类的子类/子子类...)的实例化的类,代码:
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *d = [Dog new];//实例化一个狗对象
BOOL b = [d isKindOfClass:[Dog class]];//定义一个bool类型接受函数的返回值,d为实例化的对象,后面为判断是否是此类的实例化的类
if(b == true)//当为真的时候
{
NSLog(@"这是狗的实例");
}
else//假的时候
{
NSLog(@"这不是狗的实例");
}
}
return 0;
}
2.判断一个实例是否是某个类(不包括子类)的实例化:
+(bool)[d isMemberOfClass:[Dog class]] ;
这个是类方法
3.判断类1是否是指定类2的子类
[类名1 isSubclassOfClass:[类名2 class] ]
二:响应方法
1.判读实例是否有某个方法:
SEL s1 = @selector(lookHome);
BOOL b = [animal respondsToSelector:s1];
代码如下:
1 #import <Foundation/Foundation.h> 2 #import "Dog.h" 3 4 int main(int argc, const char * argv[]) { 5 @autoreleasepool { 6 7 Animal *a = [Animal new]; 8 9 SEL s1 = @selector(lookHome); 10 BOOL b = [a respondsToSelector:s1]; 11 12 if(b==true){ 13 14 NSLog(@"里面有这个方法"); 15 } 16 else { 17 18 NSLog(@"没有"); 19 } 20 } 21 return 0; 22 }