3

可能重复:
使用点或括号语法设置属性有区别吗?

label.text = @"..."如果我在 .h 文件中定义了一个标签,并且我想在 .m 文件中更改它的文本,那么使用和之间真的有区别[label setText:@"..."]吗?他们似乎做着完全相同的事情,如果是这样,那为什么会有不同的方式来做呢?

4

1 回答 1

10

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

第二种语法是原始语法;为了方便和可读性,添加了第一个语法。关于使用这些语法的主题有不同的思想流派:有些人会告诉你不要使用一种语法或另一种语法,并提供非常有效的理由。不过,最后,这是您的选择:您应该选择一种语法,并坚持下去。只要您始终如一并且您的读者知道您的偏好,他们就应该毫无困难地阅读和维护您的代码。

于 2012-07-25T04:32:53.920 回答