iphone - 委托(delegate)与协议(protocol)

标签 iphone objective-c

<分区>

Possible Duplicate:
Difference between protocol and delegates?

Protocol 和 Delegates 之间有什么区别吗?

如果它们相同,为什么我们需要两个做同样的事情?

何时使用委托(delegate),何时使用协议(protocol)。

我是 Objective-C 和 Iphone 编程的新手。所以请多多包涵。

最佳答案

协议(protocol)和委托(delegate)是两个相关但不同的概念:

一方面,协议(protocol) 声明可以由任何类实现的方法。据说这些类符合协议(protocol)。它们就像 Java 中的接口(interface)。协议(protocol)可以是 formal or informal :

  • 正式协议(protocol)使用 @protocol 声明阻止。

  • 可以根据 @protocol 实现非正式协议(protocol)阻止所有方法为 @optional或类别为 NSObject .

另一方面,委托(delegate) 是一种设计模式,通过该模式,一个对象有机会对另一个对象的变化使用react或影响其行为。基本思想是让两个对象协调解决一个问题,同时最小化这两个对象之间的耦合并避免子类化。子类化在子类与其父类(super class)之间建立了紧密的耦合,而委托(delegate)则创建了一种基于匿名对象的松散得多的关系。

此模式通常通过协议(protocol)的方式实现,或者换句话说,委托(delegate)通常是符合协议(protocol)的匿名对象。

关于iphone - 委托(delegate)与协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361958/

相关文章:

iphone - Objective-C 和 ARC : Why value stored to during its initialization is never read?

ios - 对象在 block 内初始化后变为 nil

objective-c - 具有 SIP 概念的 iOS 应用程序可与服务器连接

iphone - UIImageView 动画未显示在 View 上

objective-c - UINavigationController 可以有多少个按钮

ios - Core Data Managed Object 无法保存上下文(错误 134030)

iphone - 为什么 atos 命令无法为我的 iOS 崩溃日志找到符号?

iphone - 通过蓝牙共享音频

iphone - 如何创建 NSPredicate 以查找具有前导数值的条目?

javascript - ios 的 Phonegap 插件...javascript 部分