Ios firstObject与objectAtIndex:0方法的用法有什么不同?

Ios firstObject与objectAtIndex:0方法的用法有什么不同?,ios,nsarray,Ios,Nsarray,今天,我使用firstObject和objectAtIndex:0进行了测试。如果数组的大小为0,则使用前者不会导致崩溃,而使用后者会导致崩溃。所以我认为使用firstObject比objectAtIndex:0更好。但是在objectAtIndex上使用firstObject是否存在陷阱:0 我也一直在阅读,我感到惊讶和奇怪,为什么他们没有在文档中提到这一事实。有一个关键的区别。如果没有,使用firstObject返回nil。如果没有对象,使用objectAtIndex:0将使应用程序崩溃(引

今天,我使用firstObject和objectAtIndex:0进行了测试。如果数组的大小为0,则使用前者不会导致崩溃,而使用后者会导致崩溃。所以我认为使用firstObject比objectAtIndex:0更好。但是在objectAtIndex上使用firstObject是否存在陷阱:0

我也一直在阅读,我感到惊讶和奇怪,为什么他们没有在文档中提到这一事实。

有一个关键的区别。如果没有,使用
firstObject
返回
nil
。如果没有对象,使用
objectAtIndex:0
将使应用程序崩溃(引发异常)。从用户体验的角度来看,强烈反对崩溃,因此使用
firstObject
更安全


但是最大的陷阱是:
firstObject
从iOS 4开始就可用,但在iOS 7之前是一个私有API。

如果您只需要第0个对象,
firstObject
就可以了。检查变量索引并使用
firstObject
如果它为零,则使用
objectAtIndex
否则将是愚蠢的。在我们的代码中,我们有许多实例使用objectAtIndex:0访问对象。通常我们只需要allAn数组中的任何对象不是您期望的大小,这是逻辑错误的结果。撞车通常比试图继续下去更安全。@ChrisDevereux说得好。我将分析我们的代码,根据具体情况确定哪些消息适用于使用是的,但至少你可以检查应用程序是否为零而不是崩溃,这最终对普通用户来说很糟糕…@vborra从用户角度看,我认为如果应用程序不崩溃会更好。也许我会添加一个逻辑来检查结果是否为零,以避免bug。