美文网首页
iOS instancetype和id的区别

iOS instancetype和id的区别

作者: 愤怒小鸟飞呀飞 | 来源:发表于2018-08-01 14:48 被阅读0次
+ (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)allocWithZone:(struct _NSZone *)zone OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)alloc OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
- (void)dealloc OBJC_SWIFT_UNAVAILABLE("use 'deinit' to define a de-initializer");

- (void)finalize OBJC_DEPRECATED("Objective-C garbage collection is no longer supported");

- (id)copy;
- (id)mutableCopy;

上述代码块中,返回类型分为 instancetype和id两种,各在何种情况下使用呢?
instancetype 关联返回类型
id非关联返回类型

1、关联返回类型
(1)类方法中,以alloc或new开头
(2)实例方法中,以autorelease,init或self开头
会返回一个方法所在类的类型对象,这些方法就被称为是关联返回类型的方法。换句话说,这些方法的返回结果以方法所在的类为类型。如上述代码
2、非关联返回类型

@interface NSArray  
+ (id)constructAnArray;  
@end

根据cocoa命名规范,得到的返回类型和方法声明的返回类型一样,是id.

相关文章

网友评论

      本文标题:iOS instancetype和id的区别

      本文链接:https://www.haomeiwen.com/subject/xofrvftx.html