gpt4 book ai didi

ios - 我需要了解为什么 Objective-C 中的委托(delegate)如此重要,是什么让它如此特别?

转载 作者:可可西里 更新时间:2023-11-01 00:18:08 25 4
gpt4 key购买 nike

所以我已经阅读了很多关于委托(delegate)的解释和实践,但我似乎仍然不明白,我有具体的问题,我希望得到一些有见地的简单答案。

  1. 为什么在实例方法上使用委托(delegate)?在 UIAlertView为什么不直接制作 – alertView:clickedButtonAtIndex:将在我的 UIAlertView 上调用的实例方法实例?

  2. 委托(delegate)属性是什么?为什么我必须创建委托(delegate)属性并使用奇怪的语法定义它 @property (nonatomic, strong) id <ClassesDelegate> delegate

  3. delegate 和 protocol 是硬币的两个面吗?

  4. 我什么时候知道应该在我的应用中实现委托(delegate)而不是直接调用?

  5. 委托(delegate)在 Swift 中的使用是否同样广泛和重要?

  6. 首先调用什么?为什么?类中谁让自己成为委托(delegate)的方法?还是在声明它的类中的委托(delegate)方法本身?

感谢您抽出宝贵的时间来解决这个问题,我迫切希望为我的问题寻找一个清晰而有用的答案,请随意举例或涵盖一些相关主题!

最佳答案

委托(delegate)的优点是依赖倒置。

通常代码在运行时调用依赖的方向上有一个编译时依赖。如果是这种情况,UITableview 类将在编译时依赖我们的代码,因为它会调用我们的代码。通过使用委托(delegate),这是相反的,我们的代码在编译时依赖于 UITableview 类,但 UITableview 类在运行时调用我们的代码。

这涉及到成本:我们需要设置委托(delegate),UITableview 必须在运行时检查委托(delegate)方法是否已实现。

注意:当我说 UITableview 时,我包括了 UITableviewDelegateUITableviewDatasource

参见:Dependency inversion principleClean Code, Episode 13 .

关于ios - 我需要了解为什么 Objective-C 中的委托(delegate)如此重要,是什么让它如此特别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826840/

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