0

编译器似乎很高兴,我对可读性略有提高感到高兴,但是 Xcode 的代码完成并不能特别识别alloc并且class以这种方式调用时:

MyClass* object = [MyClass.alloc initWithBounty:bounty];
<...>
if ([object isKindOfClass:MyClass.class])
    <...>

所以我想知道上面有什么问题,如果有的话?

4

2 回答 2

3

好吧,主要的问题是点表示法用于检索概念上属于属性的事物。alloc不访问类的属性;它创建一个对象。将它用于任何零参数方法都不是更易读——它令人困惑。

MyClass.class这种方式实际上没有问题,但是没有办法在类上声明属性,而且它们通常不被认为具有属性,因此自动完成显然不支持它。

于 2013-11-05T01:25:10.597 回答
1

最初添加点表示法是为了用于属性访问。所以你只能将它们用于

  • 方法不接受参数并返回单个值(getter)。
  • 一个方法接受单个参数并且不返回任何值(setter)。

否则,最近的编译器会抱怨它。

无论如何,我同意@nhgrif 对非属性方法使用点表示法不是一个好习惯。

于 2013-11-05T01:16:21.077 回答