iOS-instancetype与id的比较
2015-08-18 15:03
309 查看
instancetype与id的比较:
相同点:instancetype和id都可以指向任意类型的指针
差异:instancetype只可以当作返回类型,不可以当作入参类型;
instancetype当作返回类型时,如果你用一个其他不符合的类指针接收返回值,编译器会提示警告信息,而id不会;
instancetype会检测它的实际指针类型;
iOS官方推荐使用instancetype类型当作构造函数返回值就是因为这一点:
举例:
我自定义一个类:@interface Car:NSObject,这个类内没有实现length方法;
当我用NSString *str = [[Car alooc] init];的时候,如过我Car类的构造函数使用id为
返回类型,编译器会顺利通过,这样我在以后可能会调用str.length方法这时会引起
程序异常。而我用instancetype当作返回类型时编译器会提示警告信息,虽然也可以
编译通过,但是多了一层提示,如果出现异常很容易就找到了出错的地方。所以推荐
使用instancetype当作构造函数的返回类型。
相同点:instancetype和id都可以指向任意类型的指针
差异:instancetype只可以当作返回类型,不可以当作入参类型;
instancetype当作返回类型时,如果你用一个其他不符合的类指针接收返回值,编译器会提示警告信息,而id不会;
instancetype会检测它的实际指针类型;
iOS官方推荐使用instancetype类型当作构造函数返回值就是因为这一点:
举例:
我自定义一个类:@interface Car:NSObject,这个类内没有实现length方法;
当我用NSString *str = [[Car alooc] init];的时候,如过我Car类的构造函数使用id为
返回类型,编译器会顺利通过,这样我在以后可能会调用str.length方法这时会引起
程序异常。而我用instancetype当作返回类型时编译器会提示警告信息,虽然也可以
编译通过,但是多了一层提示,如果出现异常很容易就找到了出错的地方。所以推荐
使用instancetype当作构造函数的返回类型。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 部分喷墨机初始化方法
- htm页面中<a name>加name和id的冲突附解决方法
- C#中数组初始化与数组元素复制的方法
- 浅谈html中id和name的区别实例代码
- C#中结构(struct)的部分初始化和完全初始化实例分析
- js DOM 元素ID就是全局变量
- 一道关于数据库(经典父子级 ID 关联)更新题
- 动态修改DOM 里面的 id 属性的弊端分析
- JS或jQuery获取ASP.NET服务器控件ID的方法
- c#对象初始化顺序实例分析
- 在windows下手动初始化PostgreSQL数据库教程
- 使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值
- JavaScript更改class和id的方法