id:
好处:可以调用任何对象方法
坏处:不能进行编译检查
+ (id)person;
instancetype
好处:自动识别当前类的对象
坏处:不会提示返回的类型
+ (instancetype)person;
注:Xcode5之后才有instancetype,在之前一般用id,instancetype出现之后一般用instancetype
__kindof:表示当前类或者它的子类
好处:提示返回的类型,也不会出现提示类型不匹配的警告
+ (__kindof Person *)person;
开发中用得最多的是instancetype和__kindof。