wha*_*ean 2 typedef objective-c extern
我是Objective-c的新手.我有以下内容:
@interface HPSEnumerations : NSObject
typedef NSString* HPS_FORMELEMENTTYPE;
extern HPS_FORMELEMENTTYPE Textfield;
extern HPS_FORMELEMENTTYPE Label;
extern HPS_FORMELEMENTTYPE ImageView;
@end
Run Code Online (Sandbox Code Playgroud)
编译器给出错误:
架构i386的未定义符号:"_ ImageView",引用自:
任何人都可以解释发生了什么,以及如何解决它?我的基本要求是有一个枚举,其中我有字符串值而不是整数 - 这看起来尽可能接近我.
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";
Run Code Online (Sandbox Code Playgroud)
PS我也更改了枚举名称,将"枚举"放入obj-c接口声明是没有意义的