是否可以在类别中拆分公共方法?

时间:2014-01-15 10:14:14

标签: ios objective-c

现在我想将包含公共方法的ViewController拆分为多个文件,以便于管理和导航。我知道类别可以做到这一点,但它主要用于每次要使用它们时导入类别。我正在研究的ViewController意味着很多次被子类化,所以这不是一个真正的选择。

我想要实现的是将这些公共方法拆分为类别,并将所有这些类别合并到一个文件中,在头文件中导入它们,以确保子类不需要一次又一次地导入它们。

有办法做到这一点吗?我四处寻找,但我发现的只有:

  1. 在同一个标​​题中声明类别,在多个实现文件中声明它们 这不是我想要的,因为我大量记录我的代码内联,以利用XCode 5显示内联文档的能力。由于所有文档的原因,使用Ctrl + 6导航课程而不使用已经是一场噩梦迷宫。它将缓解实现文件的问题,但不是我正在寻找的问题。

  2. 声明拆分标题中的类别
    我发现的所有这些仅用于该类中的私有用途(导入实现文件中的类别)。我还需要拆分公共方法,并让它们可供子类使用。

  3. 我考虑过创建一个导入所有类别的类,基本上隐藏了实际的类,但这会把我从受保护的变量中锁定(我需要那些)。

    对此有解决方案吗?或者使用当前的Objective C真的不可能吗?

    编辑: 我听说过DocSets是Apple允许他们显示文档而不记录内联代码的方式。如果使用DocSet允许我清理我的标题代码(即将文档移到别处)并且仍然在快速帮助中提供文档,我想了解

3 个答案:

答案 0 :(得分:1)

在这些情况下,我会在父类的.h上导入必要的类别,这样子类也可以获取类别。

答案 1 :(得分:1)

在单独的头文件中声明您的类别。编写另一个头文件,其唯一目的是#include每个具有公共API的类别头文件。在编写子类时使用该单个头文件。编写另一个头文件,其中包含单个公共文件和任何其他私有类别标头,供内部使用。

这类似于框架对其类的作用。 Foundation的类在单独的文件NSObject.h,NSArray.h等中声明。然后Foundation / Foundation.h包含公共类的每个头文件。

答案 2 :(得分:0)

我决定拆分实现文件。重组多个标题的类需要更长时间,并且比我预期的更难。我认为我发布的方案无法以我希望的方式解决。