Objective c 为什么NSArray没有firstObject方法?
但是它确实有一个lastObject,有人知道为什么吗?我猜是因为Objective c 为什么NSArray没有firstObject方法?,objective-c,ios,Objective C,Ios,但是它确实有一个lastObject,有人知道为什么吗?我猜是因为lastObject减少了更多的样板代码。您可以使用现代Objective-C语法使用[array lastObject]替换[array objectAtIndex:array.count-1]或数组[array.count-1] 而在firstObject的情况下,您只需检查[array objectAtIndex:0]或array[0]。 它只是有助于简化工作,以便能够调用lastObject,而不是键入该函数 更新 正如@
lastObject
减少了更多的样板代码。您可以使用现代Objective-C语法使用[array lastObject]
替换[array objectAtIndex:array.count-1]
或数组[array.count-1]
而在firstObject
的情况下,您只需检查[array objectAtIndex:0]
或array[0]
。
它只是有助于简化工作,以便能够调用lastObject
,而不是键入该函数
更新
正如@Nathaniel Symer在上面的评论中所建议的那样,
firstObject
以前是可用的,但只在私有API中可用(我相信是从iOS 4开始)。但是,在iOS 7 SDK发布时,firstObject
现在已经公开提供 我想说的是同样的,最后一个对象实际上查询索引最高的对象,这就是为什么有一个方便的方法用于它。@0x7fffffff公平地说,它确实很好地平衡了-lastObject
,所以在这种情况下它可能更可读。@Caleb[array firstObject]之间有很大的区别
和数组[0]
。第一个返回nil,第二个在数组为空时抛出异常。假设firstObject
的工作原理与lastObject
类似(我还没有读过文档)。根据文档,firstObject
在iOS 4.0及更高版本中“可用”。@reecon&funroll:但在iOS 7 SDK之前它不在公共标题中。假设该方法确实存在,并且苹果没有针对较旧的操作系统版本进行私有方法检查,那么我猜将其添加到一个类别中是安全的(如果是针对较旧的SDK构建)。有人知道吗?甚至有一个博客:据我的一个朋友说,实际上有一个-[NSArray firstObject]很久了,它只是私有的。它也没有-secondObject
或-thirdObject
。