【问题标题】:Composition vs inheritance for iOS base view controlleriOS基本视图控制器的组合与继承
【发布时间】:2015-08-18 21:37:09
【问题描述】:

一般来说,我听说使用组合比使用继承更好,但我并不总是很清楚如何做到这一点。我想创建一些在我的所有视图控制器中通用的功能(我想监听一个 NSNotification,如果它收到通知则调用一个方法)。

我的想法是创建一个每个 UIViewController 都从中扩展的 BaseViewController。出于多种原因,我很乐意以任何其他方式解决这个问题,而不是继承

  • 一些视图控制器扩展 UIViewController 和一些扩展 UITableViewController
  • 如果我用 swift 编写它,objc 视图控制器就不能继承它
  • comp 继承的一般原因 - 更容易理解行为

我的问题是 - 我如何在不将大量代码复制并粘贴到每个视图控制器中的情况下完成此操作?我显然可以在每个视图控制器 viewDidLoad 方法中插入一行,以添加一个侦听器,并在每个视图控制器 delloc 中插入一行,但我真的宁愿避免这种情况。有没有其他技术可以让这个更干净?

【问题讨论】:

    标签: ios objective-c inheritance


    【解决方案1】:

    在 Swift 2.0 中,您可以使用带有默认方法实现的协议。但在这种情况下,继承对我来说是最好的方法。

    【讨论】:

      【解决方案2】:

      在我看来,使用 Singleton 类 来实现一些在所有 ViewController 中通用的功能会更好。

      创建一个包含 Singleton 类的简单 swift 文件,并在其中实现您想在任何地方访问的常用功能。为该类创建一个共享实例,通过使用这个共享实例,您可以调用应用程序的任何 ViewController 中的任何函数。这样您就可以重复使用代码而无需复制粘贴。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        • 2019-09-23
        相关资源
        最近更新 更多