1

我开始学习如何在 Objective-C 中阅读消息语法,并希望加强对消息语法的理解(我来自 Java/C#/Ruby 背景)。

我目前正在查看声明:

[self.view addSubview:label];

“将此消息发送给addSubView方法,以label为参数,方法在self上的视图对象上。”

(“on”并不是描述对象“点符号”的好方法。我愿意用更好的方法来转录它!)

您如何阅读和解释上述陈述?

4

3 回答 3

4

这实际上是一个嵌套的消息发送,尽管点语法让人困惑。* ObjC 中消息和方法之间的区别起初也可能有点令人困惑。通常,可以将它们视为等价的,但严格来说,是向对象发送消息;在对象的方法列表中查找消息,然后调用关联的方法。**

可以重写:

[[self view] addSubview:label];

所以消息view被发送self接收者。然后,其结果将位于另一条消息的接收方位置,即addSubview:. 你是对labeladdSubview:

那么,在英语中,这是:“添加labelself's的子视图view”或“发送addSubview:,传递label,到发送到的结果viewself


*点语法旨在作为属性访问的糖,即用于使用属性的 setter 和 getter 方法;默认情况下,getter 的名称与属性本身的名称相同。

**如果找不到方法,对象可以用消息做其他事情。这种方法/消息区别的唯一真正区别是与消息关联的方法可以在运行时更改——动态绑定。

于 2012-04-04T00:04:02.240 回答
3

它调用的方法addSubView:是(可能是其中的一个实例或子类的UIView一个属性,以 var 标签作为参数,可能是一个实例。selfUIViewControllerUILabel

于 2012-04-04T00:03:07.743 回答
0

该语句将您的视图self.view(即父视图“self”)告诉addSubview label.

于 2012-04-04T00:03:15.740 回答