Objective-C是动态类型(dynamicaly typed)语言,在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
动态类型 Dynamic typing,即等到程序执行时才确定所属的类。
动态绑定 Dynamic binding,即等到程序执行时才确定实际要调用的方法
动态加载 Dynamic loading,即根据真机加载所需要的资源(ios开发对不同机型的适配,一倍图,二倍图,三倍图即使用该机制)
我们可以用下面这个方法判断它是否是这个类或者这个类的子类的实例
- ( BOOL ) isKindOfClass:
看下例子. MyViewController是继承UIViewcontroller self 也是。
- (void)viewDidLoad {
[super viewDidLoad];
UIView * view = [[UIView alloc]init];
[self.view addSubview:view];
MyViewController *my = [[MyViewController alloc]init];
BOOL isequl1 = [self isKindOfClass:[ViewController class]];
BOOL isequl2 = [self isKindOfClass:[my class]];
NSLog(@"%d,%d",isequl1,isequl2);
// Do any additional setup after loading the view, typically from a nib.
}
打印的结果是
[7205:4348845] 1,0
说明 当前类是UIViewcontroller的实例 但是my不是。