13、id和NSObject*的区别
2019-08-03 本文已影响0人
十二月_9d09
1、id是objc_object的结构体指针,定义是typedef struct objc_object id,所有的oc对象都可以用id指向,而且在编译阶段不作类型检查。id对象调用这个对象存在的方法在编译阶段都不会报错,但是调用不存在的方法会。
2、NSObject指向的必须是NSObject的子类,调用的方法也必须是NSObject子类的方法,否则必须作强制的类型转换。
3、不是所有的oc对象都是NSObject的子类,比如说有一些继承自NSProxy,NSObject*可指向的对象是id的子集。