DOT操作员访问类方法



这个问题与知道我们不知道的事物有关。我正在研究"为什么人们不使用它"?与特定技术有关的背后有什么原因吗?因此,请仔细阅读并给予低估或给出正确的答案。

我们可以写

NSMutableString *string = NSMutableString.string;

而不是

NSMutableString *string = [NSMutableString string];

与我们如何编写此方法相同

NSMutableString *string = [NSMutableString stringWithString:@"test"];

更新:

这个问题不是重复的,它有点不同。我接受以下答案,不建议为好的程序员使用。但是他们没有解释Why,因为What reason, programmers should avoid this?可以使用正确的链接或文档对此做出明确的解释?

NSMutableString.string是一个黑客。它的"起作用"的原因是myString.length[myString length]产生相同的结果。但是,由于DOT表示法不与实际属性一起使用,因此它是对语言功能的滥用,因为属性具有不同的语义。例如,当您多次访问属性时,您自然希望获得相同的结果,除非对象的状态在两个调用之间发生了变化。由于NSMutableString.string在每个调用上都会产生一个新的字符串对象,因此它打破了"正确"属性的语义,使您的程序的可读性降低了。

Objective-C没有使用点表示法调用用参数调用方法的一般方法。该功能非常特定于属性。尽管从理论上讲,您可以使用MyClass.xyz = abc代替[MyClass setXyz:abc],但这也是一个黑客。

要回答您的问题,Objective-C没有提供使用点表示法调用[NSMutableString stringWithString:@"test"]的方法。

它只是句法糖。string方法没有参数,因此它被视为一个getter,实际上并非如此。stringWithString:是参数的方法,因此您不能那样调用。

通常,我不建议将DOT语法与方法一起使用,这是令人困惑的。带有类方法的Objective-C点表示法?

update

我认为没有任何技术原因您应该避免它。这是在编码样式的方式上,保持代码清洁和一致。

最新更新