阅读此Objective-C声明的正确方式是什么?

阅读此Objective-C声明的正确方式是什么?,objective-c,programming-languages,Objective C,Programming Languages,我开始学习如何在Objective-C中阅读消息语法,并希望加强对消息语法的理解,我来自Java/C/Ruby背景 我目前正在看一份声明: [self.view addSubview:label]; 将此消息发送到addSubView方法,使用label作为参数,mthod位于self上的视图对象上 on并不是描述对象的点符号的好方法。我愿意用更好的方式来转录它 如何阅读和解释上述语句?它在UIView上调用addSubView:方法,UIView是一个UIViewController实例或其

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

我目前正在看一份声明:

[self.view addSubview:label];
将此消息发送到addSubView方法,使用label作为参数,mthod位于self上的视图对象上

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


如何阅读和解释上述语句?

它在UIView上调用addSubView:方法,UIView是一个UIViewController实例或其子类的属性,变量标签作为参数,假设这是一个UILabel实例。

它在UIView上调用addSubView:方法,该UIView是self的属性,可能是UIViewController实例或其子类,var label作为参数,这可能是一个UILabel实例。

此语句告诉您的view self.view,它是添加子视图标签的父视图self。

此语句告诉您的view self.view,它是添加子视图标签的父视图self.view。

这实际上是一个嵌套消息发送,虽然dot语法让人困惑。*ObjC中消息和方法之间的区别一开始也可能有点困惑。一般来说,我们可以将它们视为等价物,但严格来说,消息是发送给对象的;在对象的方法列表中查找消息,然后调用关联的方法**

它可以重写为:

[[self view] addSubview:label];
因此,消息视图被发送给接收者self。然后,该操作的结果位于另一条消息的接收方位置,即addSubview:。关于label是addSubview的参数,您是对的:

在英语中,这是:添加标签作为self视图的子视图,或者发送addSubview:,传递标签,将视图发送给self

*点语法是用来作为属性访问的糖,也就是说,用于使用属性的setter和getter方法;默认情况下,getter的名称与属性本身的名称相同


**如果找不到该方法,对象可以对消息执行其他操作。这种方法/消息区别的唯一真正区别在于,与消息关联的方法可以在运行时更改-动态绑定。

这实际上是一种嵌套的消息发送,尽管dot语法让人感到困惑。*ObjC中消息和方法之间的区别一开始也可能有点困惑。一般来说,我们可以将它们视为等价物,但严格来说,消息是发送给对象的;在对象的方法列表中查找消息,然后调用关联的方法**

它可以重写为:

[[self view] addSubview:label];
因此,消息视图被发送给接收者self。然后,该操作的结果位于另一条消息的接收方位置,即addSubview:。关于label是addSubview的参数,您是对的:

在英语中,这是:添加标签作为self视图的子视图,或者发送addSubview:,传递标签,将视图发送给self

*点语法是用来作为属性访问的糖,也就是说,用于使用属性的setter和getter方法;默认情况下,getter的名称与属性本身的名称相同


**如果找不到该方法,对象可以对消息执行其他操作。这种方法/消息区别的唯一真正区别在于,与消息关联的方法可以在运行时更改-动态绑定。

如果您想了解Objective-C或任何语言,您应该在第一次介绍后查看实现。理解这是如何实现的非常重要,因为下一个与消息/方法混淆的地方是选择器,它实际上是一个c字符串,用作哈希表中的键,用于查找对消息做出反应的方法。回复:原始答案谢谢,这正是我希望加深理解的深入解释类型。这种消息发送场景听起来非常像C++的VTABLE;它们是用来完成类似功能的吗?@吉米:对不起,我不确定。我对C++几乎一无所知。bbum的博客上解释了ObjC调度的许多细节:感谢链接,感谢您的帮助。如果您想了解Objective-C或任何语言,在第一次介绍之后,您应该看看实现。理解这是如何实现的非常重要,因为下一个与消息/方法混淆的地方是选择器,它实际上是一个c字符串,用作哈希表中的键,用于查找对消息做出反应的方法。回复:原始答案谢谢,这正是我希望加深理解的深入解释类型。这种消息发送场景听起来非常像C++的VTABLE;它们是否用于完成类似的任务
功能?@Jimmy:对不起,我不确定。我对C++几乎一无所知。bbum的博客解释了ObjC调度的许多细节:感谢链接,感谢您的帮助。