/** id:万能指针 能够指向任何OC对象. id = NSObject *, id cat = [Cat new]; [cat jump]; NSObject:是所有类的父类,基类.可以指向任何OC对象. id:万能指针,可以指向任何OC对象. 区别:编译器对NSObject做类型检测,但是不对id做类型检测. */ #import <Foundation/Foundation.h> #import "Cat.h" #import "Animal.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSObject *c = [Cat new]; [(Cat *)c jump]; // id能够指向任何OC对象 id cat = [Cat new]; [cat jump]; } return 0; } void test1(){ // 下面代码无法运行成功,因为动物没有跳的行为. Animal *ani = [Animal new]; [(Cat *)ani jump]; }