id和nstancetype、NSObject的区别
id和NSObject的区别:
NSObject可以指向它的任意一个子类,但子类在使用它的时候必须强制转换
例如:
NSObject *haShiQi=[[Dog alloc]init];
[(Dog *)haShiQi bark];
如果直接调用会报错
当不确定数组元素的类型时,可以使用id
NSObject和id都可以指向任何对象
id和instancetype的区别:
instancetype 可以返回和方法所在的类相同类型的对象(基本放在返回值中,但绝对不能作为形参)
id只能返回未知类型的对象(一般作为形参)
例如
-(instancetype)init:(id)anObject;