我注意到array[index]
和[array objectAtIndex:index]
都使用了可变数组。有人可以解释他们之间的区别吗?在表现方面,哪一个是最佳实践?
答案 0 :(得分:3)
无。这是clang extensions for objective-c literals的一部分,是在2 - 3年前增加的。
此外:
数组样式下标
当下标操作数具有整数类型时,表达式为 根据是否重写使用两个不同选择器中的一个 正在读取或写入元素。当表达式读取时 使用整数索引的元素,如下例所示:
NSUInteger idx = ...; id value = object[idx];
它被翻译成了一个 致电
objectAtIndexedSubscript:
id value = [object objectAtIndexedSubscript:idx];
当表达式使用整数索引写入元素时:
object[idx] = newValue;
它被转换为对
的调用setObject:atIndexedSubscript:
[object setObject:newValue atIndexedSubscript:idx];
然后对这些消息发送进行类型检查,并像显式消息一样执行 发送。必须声明用于
objectAtIndexedSubscript:
的方法 带有一个整数类型的参数和一些返回值 Objective-C对象指针类型。用于的方法 必须使用第一个参数声明setObject:atIndexedSubscript:
有一些Objective-C指针类型和它的第二个参数 积分型。
答案 1 :(得分:2)
从技术上讲,array[index]
语法解析为对数组的-objectAtIndexedSubscript:
方法的调用。对于NSArray
,这被记录为与-objectAtIndex:
相同。
下标机制可以扩展到其他类(包括您自己的类)。从理论上讲,这样的课程可以为-objectAtIndexedSubscript:
而不是-objectAtIndex:
做一些不同的事情,但这样做设计很差。
答案 2 :(得分:0)
在Xcode 4.4之前,objectAtIndex:是访问数组元素的标准方法。 现在可以通过方括号下标语法访问它。