我开始学习如何在Objective-C中阅读消息语法,并希望加强对消息语法的良好理解(我来自Java/C #/Ruby背景(。
我目前正在查看以下声明:
[self.view addSubview:label];
"将此消息发送到 addSubView 方法,以标签作为参数,mthod 位于自身视图对象上。
("on"并不是描述对象"点符号"的好方法。我愿意接受更好的转录方法!
您如何阅读和解释上述声明?
这实际上是一个嵌套的消息发送,尽管点语法使它变得混乱。 ObjC 中的消息和方法之间的区别起初也可能有点令人困惑。通常,可以将它们视为等效的,但严格来说,消息被发送到对象;在对象的方法列表中查找消息,然后调用关联的方法。
它可以重写:
[[self view] addSubview:label];
因此,消息view
被发送到self
,接收者。其结果是另一条消息的接收方位置,即 addSubview:
.你说得对,label
是addSubview:
的论据。
在英语中,这是:"添加label
作为self
view
的子视图"或"发送addSubview:
,传递label
,发送到self
发送view
的结果"。
*dot 语法旨在作为属性访问的糖,即用于使用属性的 setter 和 getter 方法;默认情况下,getter 的名称与属性本身的名称相同。
**如果未找到该方法,则对象可以对消息执行其他操作。此方法/消息区别的唯一真正区别是,与消息关联的方法可以在运行时更改 - 动态绑定。
它在UIView
上调用方法addSubView:
,该方法是self
的属性(大概是一个UIViewController
实例或一个的子类,以var标签作为参数,大概这是一个UILabel
实例。
此语句告诉您的视图self.view
(即父视图"self"(以addSubview
label
。