instancetype和id都是万能指针,可以指向任意类型的对象。
区别:
1.id 是在运行时,才会检测对象的真实类型。可以声明对象、作为返回值、作为参数类型。
2.instancetype 是编译的时候就会检查对象的真实类型。只可以作为返回值类型。通常用于自定义构造方法返回值。
3.instancetype相对于id安全性高,看代码。
使用id作为类方法初始化返回值,将Person对象赋值给NSString对象,编译系统并不会检测出来类型不匹配。
而如果使用instancetype后,我们编译后,会发现系统给我们报警告,提示类型不匹配。安全性提高
网友评论