类中的.h文件中的typedef枚举常量

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

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


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

// Constants.h
typedef unsigned int Nimitz;

#import "Constants.h"

@interface Excelsior : NSObject

@property (assign) Nimitz numPlanes;

@end

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

如果你只需要你的实现中的枚举,然后把声明放在.m中。 如果只有接口需要枚举,则将该声明放入接口的.h中。 如果多个独立接口需要枚举,那么我会采取将它放在全局.h文件中。

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

当所有的typedef都在单个文件中时,任何时候两个开发人员都会更新任何类型,然后其中一个必须在提交时合并。 我已经处理了由我的生活中糟糕的合并造成的足够的错误。 我尽量避免它们。

如果程序中的每个文件都包含一个文件,那么对该文件的任何更改都会影响程序中的每个文件。 我发布了没有任何提交的模块中存在错误的生产代码。 对全球包括的变化引起了一个问题,那就是没有人期待,也没有人测试过,因为它看起来像模块没有被触及。

链接地址: http://www.djcxy.com/p/57437.html

上一篇: Typedef enum constant in .h file of class?

下一篇: enum values: NSInteger or int?