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