我知道您可以使用@class
字在objective-c头文件中声明一个未知类。有没有办法在标题类中声明一个未知的enum
?
例如,有没有办法防止someEnum
的编译错误?
#import <Foundation/Foundation.h>
@class UnknownClass;
@interface Foo
@property (nonatomic, strong) UnknownClass *someObject;
@property (nonatomic) UnknownEnum someEnum;
@end
答案 0 :(得分:5)
是的,您可以转发声明 enum
:
enum things;
但是我认为如果你开始使用像-pedantic
这样的编译器标志会遇到问题,因为我不相信它是ISO标准的一部分。我也认为,就像前面声明一个类一样,你可能只能使用它的指针,因为它的大小是不知道的。
我个人从未必须这样做,而是希望包含定义enum
的头文件(并且我不认为向前声明 enum
比包含文件更清晰。)
底线:不要打扰。
答案 1 :(得分:0)
如果由于某种原因,您不想为 声明#import
的标题添加#include
或enum
指令,那么只需键入它作为别的东西。所有enum
类型都限于某种形式的int
。只是宣布它是相似的。如果您知道您将获得0或更高,则可以使用NSUinteger
。如果您知道将获得负数,请使用NSInteger
。
这些中的任何一个都足以满足您的财产申报。
也就是说,只要使用枚举成员的值或将该值赋给变量,命名枚举只不过是typdef。
另一个选择是#ifndef
定义自相同类型def。