复制代码 id obj=self; if ([obj respondsToSelector:@selector(function1:)) { } //obj 是否响应 function1 if ([obj isKindOfClass:[NSArray class]] ) { } //obj 是否是NSArray 类型 if ([obj conformsToProtocol:@protocol(myProtocol)]) { } //obj 是否符合myProtocol协议 if ([[obj class] isSubclassOfClass:[NSArray class]]) { } //obj 是否是NSArray的子类 [obj someNonExistFunction]; NSString *diviceVersion = [UIDevicecurrentDevice].systemVersion; float diviceFloat = [diviceVersion floatValue]; if (!(diviceFloat>=5.0)) {####} 判断设备的系统版本 看似很简单的语句,但是为了让语言实现这个能力,语言开发者要付出很多努力实现runtime环境。这里运行时环境处理了弱类型、函数存在检查工作。runtime会检测注册列表里是否存在对应的函数,类型是否正确,最后确定下来正确的函数地址,再进行保存寄存器状态,压栈,函数调用等等实际的操作