本文主要是介绍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作为返回值类型,保证类型安全
这篇关于instancetype、id的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!