在以下示例中,object objectAtIndex:0崩溃,但firstObject产生的值为nil。为什么会这样?
{{1}}
答案 0 :(得分:7)
使用firstObject是系统定义的API,如果没有,则返回nil。但是,如果您尝试访问objectAtIndex,它将提供NSRange异常,应用程序将崩溃。
答案 1 :(得分:4)
因为它们的工作方式和记录方式不同。它明确指出,这就是它们的工作方式。 firstObject
在Obj-C世界中是“安全的”,因为如果没有任何关系,它将返回nil
和无操作。
答案 2 :(得分:3)
在框架中,对于firstObject方法,可能会检查数组是否为Empty然后返回nil。但是对于objectAtIndex:将尝试在给定索引处获取对象,并且数组为空,因此它会导致原因超出范围。
答案 3 :(得分:2)
答案 4 :(得分:0)
[array firstObject]
和array[0]
之间存在很大差异。第一个firstObject
nil和第二个在数组为空时抛出异常。假设firstObject的工作方式与lastObject类似
从程序员的角度来看,崩溃并不是一件好事,因此最好使用firstObject
。