Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在标头中声明未知枚举?_Objective C_Declaration - Fatal编程技术网

Objective c 如何在标头中声明未知枚举?

Objective c 如何在标头中声明未知枚举?,objective-c,declaration,Objective C,Declaration,我知道您可以使用@class单词在objective-c头文件中声明未知类。是否有方法在头类中声明未知的enum 例如,是否有方法防止someEnum的编译错误 #import <Foundation/Foundation.h> @class UnknownClass; @interface Foo @property (nonatomic, strong) UnknownClass *someObject; @property (nonatomic) UnknownEnum

我知道您可以使用
@class
单词在objective-c头文件中声明未知类。是否有方法在头类中声明未知的
enum

例如,是否有方法防止
someEnum
的编译错误

#import <Foundation/Foundation.h>

@class UnknownClass;

@interface Foo

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

@end
#导入
@类未知类;
@接口Foo
@属性(非原子,强)未知类*someObject;
@性质(非原子)未知数;
@结束

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

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

另一个选项是执行
#ifndef
来定义自身相同类型的def。

是,您可以向前声明
枚举

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

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


一句话:不用麻烦了

为什么不导入包含未知元素的文件?我当然可以,但我正在尽量保持头文件的干净。如果我不需要为类定义导入,我希望我不需要为新的数据类型导入。我试图搜索答案,但没有意识到我可以使用“forward declare”关键字。这意味着您将丢失对分配给属性的值的任何编译器检查。因此,“如果出于某种原因”