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