iOS Swift:闭包(回调)与委托,何时使用? [关闭]

Posted

技术标签:

【中文标题】iOS Swift:闭包(回调)与委托,何时使用? [关闭]【英文标题】:iOS Swift: Closures (Callbacks) versus Delegates, when to use which? [closed] 【发布时间】:2017-03-17 16:02:01 【问题描述】:

就简单的逻辑关联而言,我个人更喜欢 Swift 中的回调而不是委托,因为它非常直接且易于理解。同时,有些人更喜欢委托,因为委托是其他语言(例如 C#)中的流行模式。

我在网上找到了一些讨论:

1. “为什么不应该在 Swift 中使用委托?” https://medium.cobeisfresh.com/why-you-shouldn-t-use-delegates-in-swift-7ef808a7f16b#.hqb7zrc1v

2。苹果正在将注意力更多地转移到回调模式上 https://www.reddit.com/r/swift/comments/2ces1q/closures_vs_delegates/

3.块或委托? http://blog.stablekernel.com/blocks-or-delegates/

阅读这些讨论后,我仍然没有决定偏好。 我想知道什么时候使用闭包更好,什么时候使用委托更好?和原因?

谢谢!

【问题讨论】:

由于您的问题没有好的客观答案并且很快就会结束,因此只需使用最能解决给定问题的问题。 @rmaddy 感谢您的反馈。我将更新问题以更具体。它实际上和这样的问题性质相同:***.com/questions/27703913/… 我不认识,不好意思...... 在通一个里,你可以自己寻找群解决方法.. 使用委托提供了一件重要的事情——它们使类之间的联系变得明显。当我们使用委托时,我们会看到类描述级别的连接。当我们使用动作时,我们会看到方法/属性级别的连接。在类级别上查看连接对软件设计分析更有益。从这个角度来看,这一切都与耦合清晰度有关。 【参考方案1】:

(基于意见的问题的基于意见的答案)

问题不应该是哪个更好,而应该是我试图解决的问题的最佳解决方案。

我的简单规则:如果某些东西需要一个函数作为它的接口,回调通常是一个很好的解决方案。如果需要多个函数,尤其是对象的基本功能需要它们时,委托可能是更好的解决方案。

与往常一样,这取决于具体情况,但绝对语句在实际使用中很少奏效。

【讨论】:

我认为这是一个很好的观点。谢谢!

以上是关于iOS Swift:闭包(回调)与委托,何时使用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

何时在 Swift 中使用全局变量

没有在 NSObject 类 ios swift 中获取委托方法的回调

Swift 委托 - 何时在委托上使用弱指针

swift 2:与objective-c相比,推送通知没有委托回调

闭包内的 Swift NSURLSession 访问委托

在 Swift 中传递和存储闭包/回调