【iOS】instancetype与id的区别
来源:互联网 发布:淘宝买药货到付款给谁 编辑:程序博客网 时间:2024/05/16 07:12
一.instancetype与id的异同
相同点:
1.都可以作为函数返回值的类型。
不同点:
1.instancetype只能作为函数返回值类型,而id还可以作为函数的参数类型,或是用来声明一个对象。
2.instancetype返回的是与函数所在类相同类型的对象, 而id表示的只是一个Objective-c对象
二.注意:
1.在类方法中以alloc, new开头的方法,在实例方法中以autorelease, self, retain, init会自动将返回值类型id改为instancetype(包含自定义的方法)
2.在定义简单构造函数中则不会将返回值id类型改为intancetype
三.使用instancetype的好处
对于
<span style="white-space:pre"></span>NSString *str = [Person getInstance];
如果[Person getInstance] 返回值类型为 instancetype, 那么该行代码在编译器中会被警告,</span>
如果返回值类型为id, 那么我们在编译期间无法发现代码问题, 在运行时可能会发生crash。(因为OC是动态检测对象的真实类型)
四.总结
使用instancetype帮助加强代码的严谨性,如果方法是返回当前类的实例, 那么就请使用instancetype作为返回值类型。
1 0
- 【iOS】instancetype与id的区别
- instancetype与id的区别
- id与instancetype的区别
- iOS instancetype 跟 id 的区别
- [IOS 开发] instancetype和id的区别
- ios-instancetype和id的区别
- iOS-instancetype与id的比较
- OC中instancetype与id的区别
- 81, instancetype与id的区别
- Instancetype与id的区别和联系
- id 和 instanceType 的区别与联系
- OC中instancetype与id的区别
- id & instancetype 的区别
- iOS开发48-iOS id和instancetype的使用区别
- iOS中instancetype和id之间的区别
- instancetype和id的区别
- instancetype和id的区别
- instancetype和id的区别
- 文本文件读写操作
- 请编程序按如下格式打印一个直角三角形的九九乘法表:
- QtAndroid详解(5):JNI调用Android系统功能(2)
- Windows下Nginx的安装与配置
- ios开发中常用的一些软件
- 【iOS】instancetype与id的区别
- treap||树状数组(poj2352)
- ural - 1470 - UFOs(三维树状数组)
- arcgis server10.2.2的安装步骤过程
- 个人学习Java的心得
- iOS中id与NSObject* 和id<NSObject>的区别
- Mixing Milk
- 序列化手段(2)——Serializable和Parcelable的实现演示
- iOS_正则表达式判断邮箱、手机号、身份证、昵称、密码等