instancetype、id

instancetype

使用instancetype关键字作为方法的返回值代表返回当前类或者当前类的子类的实例.相应的方法有alloc, init以及便利构造方法

在恰当的地方使用instancetype取代id可以提高类型安全。

如:期望test返回类型是本方法所在的类的类型,然后去实现方法。当实现与期望不一致时,就会有警告,提示你实现有误。



又或者,

让[self test] 去调用self中的其他不存在的方法,如notExistTest()。

如果返回类型用id,那么[[self test] notExistTest]不会报错;

但是返回类型是instancetype,[[self test] notExistTest]会报错,因为使用instancetype就明确知道是哪个类,在编译时就能明确知道有没有notExistTest方法。


总结

  • id 可以作为方法参数传递; intancetype 不能
  • id 可以去接受对象; instancetype不能
  • 在自定义初始化或者便利构造方法中尽量使用instancetype作为返回值类型,保证类型安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值