编译器似乎很高兴,我对可读性略有提高感到高兴,但是 Xcode 的代码完成并不能特别识别alloc
并且class
以这种方式调用时:
MyClass* object = [MyClass.alloc initWithBounty:bounty];
<...>
if ([object isKindOfClass:MyClass.class])
<...>
所以我想知道上面有什么问题,如果有的话?
编译器似乎很高兴,我对可读性略有提高感到高兴,但是 Xcode 的代码完成并不能特别识别alloc
并且class
以这种方式调用时:
MyClass* object = [MyClass.alloc initWithBounty:bounty];
<...>
if ([object isKindOfClass:MyClass.class])
<...>
所以我想知道上面有什么问题,如果有的话?
好吧,主要的问题是点表示法用于检索概念上属于属性的事物。alloc
不访问类的属性;它创建一个对象。将它用于任何零参数方法都不是更易读——它令人困惑。
MyClass.class
这种方式实际上没有问题,但是没有办法在类上声明属性,而且它们通常不被认为具有属性,因此自动完成显然不支持它。
最初添加点表示法是为了用于属性访问。所以你只能将它们用于
否则,最近的编译器会抱怨它。
无论如何,我同意@nhgrif 对非属性方法使用点表示法不是一个好习惯。