类的.de文件中的Typedef枚举常量?

时间:2012-05-14 03:32:55

标签: iphone objective-c ios cocoa-touch design-patterns

我正在编写iPhone应用程序,并按照此问题中的建议将常量排列在Constants.h和Constants.m文件中:Constants in Objective-C

我的问题是,如果我在Constants.h中定义了一个typedef枚举,并想在我的一个.h文件中声明该typedef枚举的属性,那么实现它的正确方法是什么?我是否需要将constdef枚举移出Constants.h和类.h文件?似乎打败了拥有全局常量文件的目的......

2 个答案:

答案 0 :(得分:8)

我对这些范围问题的回答是将声明限制在所需的最小范围内。

如果您只需要实现中的枚举,则将声明放在.m中。如果只需要接口使用枚举,那么将声明放在接口的.h中。如果多个独立接口需要枚举,那么我会把它放在一个全局的.h文件中。

我有两个理由这样做。 1)限制范围减少了合并。 2)限制范围减少了由更改影响的文件数。

当所有typedef都在一个文件中时,任何时候两个开发人员更新任何类型,然后其中一个必须在提交时合并。我已经处理了因生活中不良合并而产生的足够错误。我试图避免它们。

如果程序中的每个文件都包含一个文件,那么对该文件的任何更改都将影响程序中的每个文件。我发布的产品代码中包含没有任何提交的模块中的错误。对全局包含的更改导致了一个无人预期且没有人测试过的问题,因为看起来该模块没有受到影响。

答案 1 :(得分:2)

typedef创建一个可用作类型的名称,如intBOOL或任何其他类型:它是_def_inition类型。编译器只需要能够在任何想要声明该类型变量的地方看到typedef。这意味着您需要做的就是将Constants.h导入到要使用类型的文件中:

// Constants.h
typedef unsigned int Nimitz;

#import "Constants.h"

@interface Excelsior : NSObject

@property (assign) Nimitz numPlanes;

@end