在Objective C中编写MyClass.alloc和MyClass.class有什么问题?

时间:2013-11-05 01:10:02

标签: objective-c syntax constructor

编译器看起来很开心,我对可读性略有提高感到满意,但Xcode的代码完成在以这种方式调用时并不特别识别allocclass

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

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

2 个答案:

答案 0 :(得分:3)

嗯,主要是错误的是点符号用于检索概念属性的东西。 alloc不访问该类的属性;它创造了一个对象。将它用于任何零参数方法都不是更具可读性 - 这让人感到困惑。

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

答案 1 :(得分:1)

最初添加点符号用于属性访问。所以你只能将它们用于

  • 方法不带参数并返回单个值(getter)。
  • 方法采用单个参数并且不返回任何值(setter)。

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

无论如何,我同意@nhgrif在非属性方法上使用点符号不是一个好习惯。