gpt4 book ai didi

objective-c - 在需要或不需要实现协议(protocol)的情况下进行委托(delegate)……背后的原理是什么?

转载 作者:行者123 更新时间:2023-11-28 17:43:11 24 4
gpt4 key购买 nike

我对指定委托(delegate)的类有疑问。

有时委托(delegate)对象需要实现一个协议(protocol),有时则不需要。例如,如果你想显示一个 UIAlertView,你创建它时指定一个 delegate,比如 self。然后,调用 UIAlertView 的类必须实现 UIAlertViewDelegate 协议(protocol)。

如果您使用 connectionWithRequest:delegate: 消息创建其他类,如 NSUrlConnection,您指定了一个委托(delegate),它将接收从 NSUrlConnection< 发送的委托(delegate)消息 随着连接的进行,但指定为委托(delegate)的对象不必实现协议(protocol)。

我错过了什么吗?我如何理解何时应该实现协议(protocol)?从 API 引用中它是否总是像 UIAlertViewDelegate 一样清楚?

我注意到 UIAlertView 引用仅提供实例方法并告诉您必须实现 UIAlertViewDelegate 协议(protocol),而 NSUrlConnection 确实不谈论要实现的协议(protocol),但它有一个委托(delegate)方法部分。

NSUrlConnection 是否可以像 UIAlertView 类一样定义,没有委托(delegate)方法但有 NSUrlConnectionDelegate 协议(protocol)。

还是我没捕获要点?在我看来,出于相似目的的两种不同方式,但也许我错了。我希望我已经很清楚了,我只是想完全理解这些东西背后的基本原理。

最佳答案

NSURLConnection 本身实现委托(delegate)方法,为这些事件提供一些默认行为。

默认情况下,UIAlertView 根本不处理这些事件。并允许您创建委托(delegate)来自定义处理。

区别在于是否需要默认行为。

关于objective-c - 在需要或不需要实现协议(protocol)的情况下进行委托(delegate)……背后的原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com