typedef enum:哪些类可以访问它

时间:2011-05-15 21:19:35

标签: iphone objective-c xcode enums typedef

注意:我更改了名称,我实际上没有类型字母。

在我的根视图控制器.h中,我做

typedef enum {
a,
b,
c,
d,
e }letters;

我还有其他几个类,其中大部分都需要使用这个“字母”类型。在我的根视图控制器中,我使用“#import”MyClass.h“来导入类(因为我在rootViewController中创建了它的实例)。但是,这不允许MyClass使用”字母“类型。

我尝试在MyClass.h中添加“#import rootViewController.h”,但是xcode开始给我错误(有时只是开启和关闭)。做这个的最好方式是什么?我应该只将rootViewController导入到需要此“字母”类型的所有类中吗?是否可以让rootViewController导入MyClass和MyClass导入rootViewController?

2 个答案:

答案 0 :(得分:11)

如果您只需要在连接一个类时使用枚举,请继续将其包含在该类的.h文件中。如果你需要在许多不同的地方使用枚举,你可能会更好地通过创建一个.h文件来声明枚举,并在任何你需要的地方包含它。

您的错误可能来自错过的前方声明。如果RootViewController具有引用MyClass的ivars,属性或方法签名,那么在编译器获取那些ivars,属性或方法签名之前,需要MyClass的@class MyClass;或@interface块可见。如果RootViewController.h和MyClass.h都包含另一个,那么如果首先导入RootViewController.h但是如果首先导入MyClass.h则会失败。

答案 1 :(得分:0)

typedef enum有点像#define,有一些错误检查(仅限于整数类型)。

即。关于它可能导致问题的唯一方法是,如果你搞砸了语法或声明具有相同名称的东西(重新声明错误)。

除此之外,不太可能是你的问题。

如果没有看到错误消息,就无法多说。