2012-07-25 54 views
2

可能重复:
Is there a difference between setting a property with the dot or the bracket syntax?“.text”和“setText:”之间的区别?

如果我定义在.h文件中一个标签,我想改变在.m文件中的文字时,是真的有差别在使用label.text = @"..."[label setText:@"..."]之间?他们似乎做同样的事情,如果是这样的话,那么为什么不同的方式来做到这一点?

+0

[点符号使用setter?]的可能重复?(http://stackoverflow.com/questions/2207810/dot-notation-using-setter),[点句法或括号语法是否正确?](http:// stackoverflow.com/questions/10786714/is-dot-syntax-or-bracket-syntax-correct-for-property-access),[消息语法与点语法:有什么区别?](http://stackoverflow.com/questions/4259946/objective-c-message-syntax-vs-dot-syntax-whats-the-difference) – 2012-07-25 04:33:24

回答

9

内部工作没有区别。第一种方法需要label的类型,以便编译器可以验证属性的存在;即使编译器不知道确切的类型(即,类型是id),第二种方法也可以工作。

第二种语法是原始语法;第一种语法是为了方便和可读性而添加的。关于使用这些语法的主题有不同的思想流派:有些人会告诉你不要使用一种语法或其他语法,并提供非常有效的理由。但最终,这是您的选择:您应该选择一种语法,并保持一致。只要你是一致的,你的读者知道你的偏好,他们不应该以任何方式阅读和维护你的代码。

+2

+1关于未知类型的部分。 – Thilo 2012-07-25 04:34:23

相关问题