相同点
都可以作为方法的返回类型
不同点
①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象
+ (id)appWithArray:(NSArray *)array;
LZApp *app = [LZApp appWithArray:array];
NSString *string = [LZApp appWithArray:array]; (因为id是未知类型,系统不报错,运行后崩溃)
+ (instancetype)appWithArray:(NSArray *)array;
LZApp *app = [LZApp appWithArray:array];
NSString *string = [LZApp appWithArray:array]; (系统⚠️提示,因为类型不一致)
②instancetype只能作为返回值,不能像id那样作为参数
- (void)setValue:(instancetype)value; // 报错
- (void)setValue:(id)value; // 正确
instancetype与id的区别
本文探讨了Objective-C中instancetype与id的区别。instancetype确保返回方法所在类的对象,提供类型安全性;而id则能返回任意对象,灵活性高但缺乏类型检查。文章通过示例说明两者在实际应用中的差异。
535

被折叠的 条评论
为什么被折叠?



