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"、参照元:

誰かが何が起こっているのか、そしてそれを修正する方法を説明できますか?私の基本的な要件は、intの代わりに文字列値を持つ列挙型を持つことです-これは私が得ることができる限り近く見えました。

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 に答える