【问题标题】:Objective-C extern and typedef undefined symbolsObjective-C extern 和 typedef 未定义符号
【发布时间】:2012-06-17 06:38:23
【问题描述】:

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

@interface HPSEnumerations : NSObject
typedef NSString* HPS_FORMELEMENTTYPE;

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

编译器给出错误:

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

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

【问题讨论】:

    标签: objective-c typedef extern


    【解决方案1】:

    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";
    

    P.S.我也稍微更改了枚举名称,将您的“枚举”放入 obj-c 接口声明中是没有意义的

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2012-09-05
      • 2014-10-03
      • 1970-01-01
      相关资源
      最近更新 更多