iphone - 对象 "sending messages"是什么意思?协议(protocol)如何帮助对象通告它支持的消息?

标签 iphone objective-c cocoa cocoa-touch protocols

对象“发送消息”是什么意思?协议(protocol)如何帮助对象宣传它支持的消息?有人有例子吗?

最佳答案

将对象不仅视为无生命的对象,而且视为参与者 - 具有知识(状态)、具有关系(与其他对象)、做出决策和执行操作(与其他对象、针对其他对象以及对其他对象执行操作)的做法很有帮助。 )。

在这个概念中,我们不再说“x 调用 y 上的 foo 方法”(这是一个非常编程化的说法),而是将对象视为彼此交谈。我们可能会说“x 向 y 发送一条 foo 消息”,或者更具体地说,“文本字段 x 告诉 y 它的 textFieldDidChange:”或“x 问 y 什么”它的 framistanCalibrationLevel 是”或任何类似的陈述,既可以轻松地描述人,也可以描述想象的物体。

(“消息”术语的原因并不完全是概念性的:它是从 Objective-C 的母语言之一 Smalltalk 带来的。这就是历史原因。)

协议(protocol)是一种工作描述。正如一个人可能拥有看门人、工程师、主管或接待员的头衔一样,履行这些功能的对象可能符合这些名称的协议(protocol),声明这些对象对告诉他们要做的事情或询问他们的消息做出响应,他们工作的某些方面。

在实际的 Cocoa 和 Cocoa Touch 使用中,协议(protocol)通常描述一个对象可能向另一个对象提供的一组功能(同样,不是编程意义上的),例如响应消息的数据源, View 可以通过该数据源获取消息数据或对象可能响应的一组通知,例如应用程序委托(delegate)的 applicationDidFinishLaunching:applicationWillTerminate: 等。

有时,协议(protocol)可以更加通用,就像更广泛版本的父类(super class)一样,现实世界中的类比是许多不同类型的销售人员,Cocoa 示例是响应验证消息的许多不同类的 UI 对象。在某些框架中,您可能为此创建一个抽象类,但协议(protocol)允许您做同样的事情(声明一堆相似但不同的对象具有一些共同的属性/能力),而无需编写虚拟实现。

关于iphone - 对象 "sending messages"是什么意思?协议(protocol)如何帮助对象通告它支持的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361006/

相关文章:

iphone - UIActivityIndi​​catorViewStyleWhiteLarge 未出现在 iphone 4 中

iphone - 顶部和底部的标签栏

iphone - 从 MP3 文件/ID3 标签获取专辑插图

objective-c - 帮助制作自动更新程序

ios - Quickblox 聊天室确实收到消息,但未调用

ios - 我的 iPhone 应用程序应该占用多少内存?

objective-c - 创建一个空对象有什么用吗? ( Objective-C )

iphone - 我可以在 iPhone 上使用 setModalPresentationStyle 吗?

objective-c - 将 NSMenuItems 与 Actions 连接起来,反之亦然

cocoa - NSStatusBar 动画文本