可能重复:
Is there a difference between setting a property with the dot or the bracket syntax?
如果我在.h文件中定义标签,并且我想在.m文件中更改它的文本,那么使用label.text = @"..."
和[label setText:@"..."]
之间真的有区别吗?他们似乎做了完全相同的事情,如果是这样,那么为什么采用不同的方式呢?
答案 0 :(得分:10)
内部工作没有区别。第一种方法要求label
的类型使得编译器可以验证属性的存在;即使编译器不知道确切类型(即类型为id
时),第二种方式仍然有效。
第二种语法是原始语法;为了方便和可读性,添加了第一个语法。关于使用这些语法的主题有不同的思想流派:有些人会告诉你不要使用一种语法或另一种语法,并提供非常有效的理由。但最后,这是你的选择:你应该选择一种语法,并坚持下去。只要您保持一致并且您的读者了解您的偏好,他们就可以毫无困难地阅读和维护您的代码。