在另一个类的相同.h / .m文件中定义类别

时间:2013-05-08 10:39:48

标签: objective-c

在另一个类的相同.h / .m文件中定义类别是一个好习惯吗?我知道它将构建没有错误,并且与单独定义完全相同。

我想这样做的主要原因是因为我正在开发一个开源控件,我希望它有一个.h / .m文件。

2 个答案:

答案 0 :(得分:3)

通常,将多个类和类别组合到同一标头/实现中的最大问题是可搜索性受损。当一个类在另一个类的文件中时,文件名将不再反映标题/实现包含其他类的事实,这使得其他人更难以查找您的类。

但是,如果您的项目规模较小且独立,则可搜索性不是问题。当只有一个文件要搜索时,不存在每个特定代码段的位置:它都在那个文件中。听起来你的项目既小又自包含,所以如果你想要那样,我认为将所有代码放在一个源文件中都没有问题。

另一种替代方法是将每个类和类别放在一个单独的头文件/实现文件对中,然后定义一个包含所有文件的头文件。这将使您保持理想的项目组织,并让您的用户包含一个标题来使用您的组件。

答案 1 :(得分:1)

如果您只在一个地方需要此类别,我会说在.m文件中包含该类别并不是那么糟糕。

显然,如果你需要在多个地方使用该类别,你肯定应该转移到自己的文件:惯例是以这种方式命名:

BaseClass+categoryName.{h,m}

e.g:

NSString+reverseString.h
NSString+reverseString.m