如何在标题中声明未知的枚举?

时间:2013-02-22 11:44:29

标签: objective-c declaration

我知道您可以使用@class字在objective-c头文件中声明一个未知类。有没有办法在标题类中声明一个未知的enum

例如,有没有办法防止someEnum的编译错误?

#import <Foundation/Foundation.h>

@class UnknownClass;

@interface Foo

@property (nonatomic, strong) UnknownClass *someObject;
@property (nonatomic) UnknownEnum someEnum;

@end

2 个答案:

答案 0 :(得分:5)

是的,您可以转发声明 enum

enum things;

但是我认为如果你开始使用像-pedantic这样的编译器标志会遇到问题,因为我不相信它是ISO标准的一部分。我也认为,就像前面声明一个类一样,你可能只能使用它的指针,因为它的大小是不知道的。

我个人从未必须这样做,而是希望包含定义enum的头文件(并且我不认为向前声明 enum比包含文件更清晰。)

底线:不要打扰

答案 1 :(得分:0)

如果由于某种原因,您不想为 声明#import的标题添加#includeenum指令,那么只需键入它作为别的东西。所有enum类型都限于某种形式的int。只是宣布它是相似的。如果您知道您将获得0或更高,则可以使用NSUinteger。如果您知道将获得负数,请使用NSInteger。 这些中的任何一个都足以满足您的财产申报。

也就是说,只要使用枚举成员的值或将该值赋给变量,命名枚举只不过是typdef。

另一个选择是#ifndef定义自相同类型def。