2

我是objective-c的新手。我有以下内容:

@interface HPSEnumerations : NSObject
typedef NSString* HPS_FORMELEMENTTYPE;

extern HPS_FORMELEMENTTYPE Textfield;
extern HPS_FORMELEMENTTYPE Label;
extern HPS_FORMELEMENTTYPE ImageView;
@end

编译器给出以下错误:

架构 i386 的未定义符号:“_ImageView”,引用自:

谁能解释发生了什么,以及如何解决?我的基本要求是有一个枚举,其中我有字符串值而不是整数 - 这看起来尽可能接近。

4

1 回答 1

6

extern声明不会创建变量,它只是一个承诺,即在当前模块之外的某个地方创建变量。要修复您的错误,您需要在某个实现文件中实际创建它(即在没有“extern”字样的情况下声明它):

// Header
// HPSEnumerations.h
extern HPS_FORMELEMENTTYPE TextfieldType;
extern HPS_FORMELEMENTTYPE LabelType;
extern HPS_FORMELEMENTTYPE ImageViewType;

// Implementation
// HPSEnumerations.m
HPS_FORMELEMENTTYPE TextfieldType = @"Textfield";
HPS_FORMELEMENTTYPE LabelType = @"Label";
HPS_FORMELEMENTTYPE ImageViewType = @"ImageView";

PS我也改变了一些枚举名称,将你的“枚举”放入obj-c接口声明是没有意义的

于 2012-06-14T08:52:08.417 回答