instancetype和id的区别

id的缺点

NSString *str = [XMGShop shopWithDict:nil];

NSLog(@"%@", str.length);

提问:会不会报错?会报什么错?

答:shop没有length方法,所以用id会发生一些莫名其妙的错,而且编译器不会报错(在开发阶段没发现是很严重的问题)

id和instancetybe的相同和不同点:

* 都可以代表任意类型
* instancetype只能作为返回值
* id类型可以作为返回值,也可以作为参数,也可以定义变量
* instancetype会类型检测,id不会进行类型检测

原文地址:https://www.cnblogs.com/wwjwb/p/12649911.html