instancetype和id的异同

1、相同点

都可以作为方法的返回类型

2、不同点

①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;

②instancetype只能作为返回值,不能像id那样作为参数

3、关联返回类型方法

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

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

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

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

4.instancetype的好处

- (id)initWithBar:(NSInteger)bar; // 关联返回类型方法
+ (id)fooWithBar:(NSInteger)bar;  // 简易构造函数(非关联返回类型方法)

如上所示,其实对于关联返回类型方法而言,返回值类型是id还是instancetype都一样,一旦返回的类型不是方法所在类的类型,编译器会报警告,但是对于简易构造函数而言,如果返回值类型是id的话,编译器并不会检测它是否属于方法所在类的类型,因此,instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!

转载于:https://my.oschina.net/jlongtian/blog/842369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值