如果我想知道NSArray的大小,我可以使用两种类似的方法:
NSArray *arr = @[@"1", @"2"];
NSInteger i = [arr count];
NSInteger j = arr.count;
那么这两种方法有什么区别?是否会有任何性能差异?非常感谢
答案 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
当您使用。(点)时,您正在访问对象的属性
但价值明智都给出相同的数量。