[IOS 开发] instancetype和id的区别
2016-02-25 16:42
591 查看
instancetype clang 3.5 提供的关键字, 表示:某方法返回未知类型的OC对象
都知道id任意类型关键字,为什么还会出现一个新的关键字?
返回关联类型
1、类方法中,alloc, new开头
2、实例方法中 autorelease,init,retain,self开头
会返回方法所在类的类型的对象,即关联返回类型的方法。
这些方法的返回结果以方法所在的类为类型。
for example
@interface NSObject +(id)alloc; -(id)init; @end
当我们初始化 NSArray时
NSArray*array = [[NSArray alloc] init];
[NSArray alloc]返回类型属于关联返回类型,NSArray *
instancetype
假如一个不是关联返回类型的方法
@interface NSArray +(id)constructAnArray; @end
当我们初始化的时候
[NSArray constructAnArray]
得到返回类型和方法声明的返回类型一样,是id
如果使用 instancetype 作为返回类型
@interface NSArray +(instancetype)constructAnArray; @end
同样方式初始化
[NSArray constructAnArray]
得到的返回类型和方法所在类型相同,是 NSArray *
instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!
好处:确定对象类型帮编译器更好定位代码问题。
相同点:
作为方法的返回类型
不同点:
1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。
2、instancetype只能作为返回值,id可以作为参数.
-(void)setValue:(instancetype)value { }
报错!
应该写成
-(void)setValue:(id)value { }
相关文章推荐
- iOS本地搜索(谓词)
- IOS发布的一些坑
- iOS开发--CocoaPods使用
- 详解 iOS navigationBar 的设置问题
- ios autolayout 使用总结
- #import与@class的区别
- [充电][ios]ios充电接口
- ios开发——iOS9 3D Touch 使用教程
- iOS开发之设置导航栏标题的字体大小和颜色
- iOS:手把手教你发布代码到CocoaPods(Trunk方式)
- iOS 创建带有Xib文件ViewController时 如何正确设置frame?
- iOS App集成Apple Pay教程(附示例代码)
- iOS 视频边下边播
- iOS 的 XMPPFramework 简介
- 内存管理与属性的参数
- AFNetworking施工例子
- 关于IOS多线程的好的技术博客
- iOS sizeClass设备对照表
- iOS-OC-AFNetworking上传和下载(回调下载进度)
- IOS各种调试技巧(条件断点、僵尸模式、内存检测、图层透视图模式)