区别:
在ARC(Auto Reference Count)环境下:
instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型,运行时检查类型
在MRC(Manual Reference Count)环境下:
instancetype和id一样,不做具体类型检查
区别2:
id可以作为方法的参数,但instancetype不可以
instancetype只适用于初始化方法和便利构造器的返回值类型
便利构造器
举例:
在Teacer.h里添加定义
+(id)teacherWithName:(NSString *)name;
在Teacher.m里添加实现
+(id)teacherWithName:(NSString *)name{
Teacher *t=[[Teacher alloc]initWithName:name];
return t;
}
ps: “-”和“+”修饰的方法的异同: “-”方法是实例方法,只有实例化 的对象可以调用
“+”方法是类方法,无需实例化,直接用类名就可以直接访问
便利构造器封装了对象的整个过程,进一步简化了对象创建的步骤