这个问题与知道我们不知道的事物有关。我正在研究"为什么人们不使用它"?与特定技术有关的背后有什么原因吗?因此,请仔细阅读并给予低估或给出正确的答案。
我们可以写
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
我认为没有任何技术原因您应该避免它。这是在编码样式的方式上,保持代码清洁和一致。