Objective-C中[array count]和array.count之间的区别是什么

时间:2014-08-07 06:21:11

标签: ios objective-c

如果我想知道NSArray的大小,我可以使用两种类似的方法:

NSArray *arr = @[@"1", @"2"];
NSInteger i = [arr count];
NSInteger j = arr.count;
那么这两种方法有什么区别?是否会有任何性能差异?非常感谢

3 个答案:

答案 0 :(得分:1)

用[arr count];您将消息计数发送到数组对象。

如果arr.count位于某个表达式的右侧,则调用count属性的getter,这与[arr count]基本相同;

如果object.someProperty位于某个表达式的左侧,则调用count属性的setter,它与[object setSomeProperty:someValue]基本相同。

因为getter的语法和向对象发送消息对于属性表示相同的事情(当在表达式的右侧时),编译器允许您使用。 (点)语法,即使点后面的名称不一定是属性的getter(例如count是NSArray类的方法,但是如果使用[arr count]或arr,编译器不会抱怨。计数)。

答案 1 :(得分:1)

[arr count]arr.count基本相同。两者都调用obj_msg_send,点语法只是[arr count]的合成糖。

答案 2 :(得分:-1)

[arr count]当你打电话给你时,你会立即访问getter方法。

arr.count当您使用。(点)时,您正在访问对象的属性 但价值明智都给出相同的数量。