2

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

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

4

2 回答 2

3

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

但是,如果您的项目很小且独立,那么可搜索性就不是问题。当只有一个文件要搜索时,不存在每段特定代码在哪里的问题:它都在那个文件中。听起来你的项目既小又独立,所以如果你想要这样的话,我认为将所有代码放在一个源文件中没有问题。

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

于 2013-05-08T10:45:32.183 回答
1

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

显然,如果您在多个地方需要该类别,则绝对应该移至其自己的文件:约定是这样命名的:

BaseClass+categoryName.{h,m}

例如:

NSString+reverseString.h
NSString+reverseString.m
于 2013-05-08T10:45:23.483 回答