【问题标题】:What if we include every UIScrollViewDelegate method in its UIScrollView?如果我们在其 UIScrollView 中包含每个 UIScrollViewDelegate 方法会怎样?
【发布时间】:2016-09-06 22:51:25
【问题描述】:

我正在学习概念委托。我知道它的定义以及它在几个例子中是如何工作的。

如果我们在其UIScrollView 中包含每个UIScrollViewDelegate 方法会怎样?我们仍然可以让它工作,因为如果我们可以让UIScrollView 自己行动,而不是向它的委托人发送信息并等待委托人的响应。

我们为什么不这样做呢?是因为UIScrollView 会变得庞大吗?是不是因为我们想让UIScrollView 处理最一般的任务,而让其委托处理一些其他次要任务?为什么这种方式比委托更糟糕?

这个问题可以扩展为一个一般性问题:在 iOS 环境中委托的动机是什么?

【问题讨论】:

    标签: ios cocoa delegates


    【解决方案1】:

    委托的全部意义(在这种情况下)是让其他人知道正在发生的事情。滚动视图已经知道自己发生的一切。滚动视图没有理由实现任何委托方法。委托方法是可用的,因此滚动视图可以(可选地)告诉它的委托有关特定事件,以便委托可以根据需要做出相应的反应。

    一个更好的例子可能是UITableView。它有一个委托和一个数据源。数据源的意义在于,表格视图可以发出请求来确定要显示什么数据和显示多少数据。它的代表在那里通知代表有关表格视图发生的各种事件。表视图实现所有这些数据源和委托方法是没有意义的。重点是表格视图是通用的,可以显示任何数量的数据和任何内容。它是提供显示内容的详细信息的数据源。

    【讨论】:

      【解决方案2】:

      UIScrollView 非常通用,在 iOS 开发过程中被大量使用。滚动非常简单,并且在任何地方都基本相同。但是,通常情况下,您只想在一个地方向滚动视图添加一些行为。例如,每次用户在主屏幕上滚动内容时,您都希望将消息打印到控制台。您不想将此逻辑添加到UIScrollView,因为您只希望这个滚动视图以这种方式运行。通过将委托附加到UIScrollView 的能力,您可以将某些特定行为注入某些滚动视图,而无需更改其他滚动视图的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-26
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多