计数是 属性 还是不是?
Is count a property or not?
在 objective c 的官方 google 风格指南中提到
Dot notation is idiomatic style for Objective-C 2.0. It may be used when doing simple operations to get and set a @property of an object, but should not be used to invoke other object behavior.
以下是 getting/setting 属性的首选方式,而不是使用方括号:
NSString *oldName = myObject.name;
myObject.name = @"Alice";
以下是执行相同操作的非首选方法:
NSArray *array = [[NSArray arrayWithObject:@"hello"] retain];
NSUInteger numberOfItems = array.count; // not a property
array.release; // not a property
但是,根据风格指南,count 不是 属性,因此应该使用括号表示法。不过算起来还真是个属性。任何人都可以权衡一下吗?
如果您参考 NSArray
的文档,您会看到计数绝对是 属性
听起来风格指南有误。正如您所说,点符号是 属性 访问器的首选——但对于 getter 更是如此。 array.count
正确。
然而,犯错是有道理的,因为在其他语言中,计数通常不会存储为 属性,您需要调用一个方法来检索计数。 NSArray
很特别:)
在 objective c 的官方 google 风格指南中提到
Dot notation is idiomatic style for Objective-C 2.0. It may be used when doing simple operations to get and set a @property of an object, but should not be used to invoke other object behavior.
以下是 getting/setting 属性的首选方式,而不是使用方括号:
NSString *oldName = myObject.name;
myObject.name = @"Alice";
以下是执行相同操作的非首选方法:
NSArray *array = [[NSArray arrayWithObject:@"hello"] retain];
NSUInteger numberOfItems = array.count; // not a property
array.release; // not a property
但是,根据风格指南,count 不是 属性,因此应该使用括号表示法。不过算起来还真是个属性。任何人都可以权衡一下吗?
如果您参考 NSArray
的文档,您会看到计数绝对是 属性
听起来风格指南有误。正如您所说,点符号是 属性 访问器的首选——但对于 getter 更是如此。 array.count
正确。
然而,犯错是有道理的,因为在其他语言中,计数通常不会存储为 属性,您需要调用一个方法来检索计数。 NSArray
很特别:)