4

我知道你可以使用这个@class词在 Objective-C 头文件中声明一个未知的类。有没有办法enum在头类中声明未知数?

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

#import <Foundation/Foundation.h>

@class UnknownClass;

@interface Foo

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

@end
4

2 回答 2

5

是的,您可以转发声明enum

enum things;

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

我个人从来没有这样做过,而是更喜欢包含定义的头文件enum(而且我不认为向前声明enum包含文件更干净)。

底线:不要打扰

于 2013-02-22T11:57:59.100 回答
0

如果您出于某种原因不想为声明的标头添加#importor#include指令,enum只需将其键入为其他内容。所有enum类型都仅限于某种形式的int. 只需将其声明为相似即可。如果你知道你会得到 0 或更高,你可以使用NSUinteger. 如果您知道会得到负数,请使用NSInteger. 其中任何一个都足以满足您的财产申报。

也就是说,命名枚举只不过是使用枚举成员的值或将该值分配给变量的类型定义。

另一种选择是做#ifndef定义自我相同类型的def。

于 2013-02-22T11:57:47.727 回答