[arr firstObject] 和 arr[0] 的区别
2016-04-15 23:06
573 查看
在OC编程中,很多应用场景下都会,调用到某一个数组的第一个元素,例如网络请求数据,转换成model等。
在iOS编程中大家可以使用[arr firstObject]这一方法去直接获取arr这个数组的第一个元素,他的内部实现原理上是这个样子的NSArray *arr = [NSArray array];
id item = [arr firstArray];
// 在这个方法出现之前你要这样处理
id item = [arr count] > 0 ? arr[0] : nil;所以我们在编程的过程中,如果使用到某一数组的第一个元素时,切勿直接访问arr[0],因为如果这个数组为空,你访问第一个元素,就会造成下标越界,而引起程序崩溃。
所以firstObject这个方法内部做了保护措施,如果数组为空就返回一个nil给请求数组第一个元素的变量,如果不为空,就返回数组第一个元素给这个变量。
所以在编程中,一定要注意区分。
在iOS编程中大家可以使用[arr firstObject]这一方法去直接获取arr这个数组的第一个元素,他的内部实现原理上是这个样子的NSArray *arr = [NSArray array];
id item = [arr firstArray];
// 在这个方法出现之前你要这样处理
id item = [arr count] > 0 ? arr[0] : nil;所以我们在编程的过程中,如果使用到某一数组的第一个元素时,切勿直接访问arr[0],因为如果这个数组为空,你访问第一个元素,就会造成下标越界,而引起程序崩溃。
所以firstObject这个方法内部做了保护措施,如果数组为空就返回一个nil给请求数组第一个元素的变量,如果不为空,就返回数组第一个元素给这个变量。
所以在编程中,一定要注意区分。
相关文章推荐
- NSObject的hash方法
- 问题处理之detectMultiScale函数objects返回值异常
- Node.js学习 - Global Object
- iOS中通知中心的概念知识吧(objective - c版)
- Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option t
- Struts2 JSONObject的使用
- Fatal error: Call to a member function fetch_array() on a non-object in E:\wamp\www\shop\index.php
- Swift学习: 从Objective-C到Swift
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- 错误:*** -[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object
- Objective-C单例设计模式
- Objective-C之NSBundle
- QObject派生类作为Qt 插件的Interface
- (转)js activexobject调用客户机exe文件
- Android JSONObject对null的处理
- Getting Spring Application context from a non bean object
- 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》 笔记3 为什么要用属性
- Swift与Objective-C API的交互
- Object-C 属性
- hello objective-c