【问题标题】:Is count a property or not?算不算财产?
【发布时间】:2015-04-09 04:50:09
【问题描述】:

在objective c的官方google style guide中,提到了

点表示法是 Objective-C 2.0 的惯用风格。它可以在执行简单操作以获取和设置对象的@property 时使用,但不应用于调用其他对象行为。

以下是获取/设置属性的首选方法,而不是使用括号:

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 不是属性,因此应该使用括号表示法。但是,count 确实是一个属性。请问有人能指点一下吗?

【问题讨论】:

    标签: objective-c objective-c-2.0 google-style-guide


    【解决方案1】:

    如果您参考 NSArray 的文档,您会看到 count 绝对是一个属性

    https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/#//apple_ref/occ/instp/NSArray/count

    听起来样式指南有一个错误。正如您所说,点表示法对于属性访问器来说是首选——但对于 getter 来说更是如此。 array.count 是正确的。

    但是,犯错确实是有道理的,因为在其他语言中,count 通常不存储为属性,您需要调用方法来检索计数。 NSArray 很特别 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多