iOS id 和 instancetype 的区别

参考来自:http://blog.csdn.net/kuizhang1/article/details/18048829

两句话总结:

如果是关联返回值类型都一样;如果是非关联返回值类型就instancetype好,能返回对象本身而id只能返回id类型。
instancetype不能作为行参的类型只能作返回值。

何为:关联返回类型(related result types)

根据Cocoa的命名规则,满足下述规则的方法:

1、类方法中,以alloc或new开头。

2、实例方法中,以autorelease,init,retain或self开头。

都会返回一个和方法所在类同样类型的对象,这些方法就被称为是关联返回类型的方法。换句话说,这些方法的返回结果的类型和方法所在的类的类型是一样的

比如:

 - (NSArray *)init;  返回的是NSArray 当前类型也是NSArray  类型是一样的,属于关联类型。

@interface NSArray : NSObject 
- (NSArray *)init;
@end 

  

  

原文地址:https://www.cnblogs.com/saytome/p/8078780.html