区别:

在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: “-”和“+”修饰的方法的异同:   “-”方法是实例方法,只有实例化 的对象可以调用

                                                     “+”方法是类方法,无需实例化,直接用类名就可以直接访问

便利构造器封装了对象的整个过程,进一步简化了对象创建的步骤 

posted on 2018-02-26 15:23  强者VS弱者  阅读(450)  评论(0编辑  收藏  举报