【问题标题】:iOS - extending two classes in oneiOS - 将两个类合二为一
【发布时间】:2012-10-17 19:10:24
【问题描述】:

我已经用我想要的几个函数扩展了 UIVIewController 类。

我想将相同的功能添加到 UITableViewController 类,我的意思是,也扩展该类。

为了做到这一点,我必须将扩展 viewController 类上的所有方法复制到一对新的文件中,这些文件将用于扩展 tableViewController 类。对不起我的无知,但是有一种方法可以在没有冗余的情况下扩展这两个类?我的意思是,只有一个通用扩展类(?)可以被 viewController 和 tableViewController 扩展文件继承?对不起,如果这很混乱。我的意思是,而不是这个:

UIViewController+extensions.h
UIViewController+extensions.m

都包含很多 UIViewController 类的扩展方法和

UITableViewController+extensions.h
UITableViewController+extensions.m

都包含很多 UITableViewController 类的扩展方法。

我想要这个:

GenericExtension.h
GenericExtension.m

这个,包含扩展方法

那么,

UIViewController+extension和UITableViewController+extension,都是继承GenericExtension,所以我只有一份扩展方法。

这可能吗?

【问题讨论】:

  • 这称为多重继承。 Objective-C 没有这个。

标签: iphone ios ipad


【解决方案1】:

如果您不使用继承,而是使用UIViewController 上的类别(正如您的文件命名所暗示的那样),那么这些方法也将在UITableViewController 中可用。确保在 UITableViewController 子类中导入头文件。

【讨论】:

    【解决方案2】:

    选项 1:

    将所有方法写入 (GenericExtension.h/.m) 使其成为 UIViewController 类型

    稍后在UIViewController

    @interface RootViewController : Generic Extensions
    

    您可以对 UITableViewController 执行相同的操作,因为 UITableViewController 派生自 UIViewController

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多