点语法有两种不同的含义:一个结构引用(CGSize 是一个 C 结构),或者一个 Objective-C 消息发送。
理论上,如果你有一个类似的方法- (void)doSomething;
,你可以这样调用它myObject.doSomething; //bad style
:不要这样做。除了获取或设置值之外,点语法不适用于调用实际执行操作的方法(尽管语言或 IDE 中没有任何内容会阻止您)。
合成属性会创建访问器方法:- (myType)myProperty
和- (void)setMyProperty:(myType)newValue
. 在这里,点语法允许您以普通方式访问 getter(因为 getter 是一个普通的 Objective-C 方法),并且对于 setter 有一个特殊情况:myObject.myProperty = newValue
被翻译为[myObject setMyProperty:newValue]
.
这意味着您可以在点语法和 Objective-C 样式的属性消息发送语法之间切换(以及技术上所有其他无参数的 Objective-C 方法发送),但您必须使用点语法来访问结构成员。结构不是对象,它们现在知道方法。