0

定数を格納するためのクラスがあります。

そのため、Constant.h と Constant.m を呼び出す 2 つのファイルがあります。

これは私が.hファイルに持っているものです:

#import <Foundation/Foundation.h>

enum kParams {
    kFirstName = 0,
    kLastName = 1
};

extern NSString * const kNotificationUpdateMainMenu;

これは私が.mファイルに持っているものです:

#import "Constants.h"

NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu";

初めてうまく機能しますが、他の const (たとえば kNotificationFbLoginSuccesss) を追加しようとすると、他のクラスには表示されません。

これは、私が抱えている問題を示すメッセージです。しかし、この問題がなければ他の定数がどのように機能するかわかりません (追加した新しい定数だけでこのエラーが発生します)。

/Users/developer/Documents/Projects/Test/Test/Test/AppDelegate.m:121:64: Use of undeclared identifier 'kNotificationFbLoginSuccsess'

私はそれを修正する方法をいくつか見つけました:

  • オーガナイザーを開く
  • 派生データのクリア
  • project.xcworkspace ファイルと xcuserdata を削除します
  • プロジェクトを閉じる
  • Xcodeを再起動します

しかし、操作が多すぎると思うので、定数を 1 つ追加できます。どうして?

4

1 に答える 1

1

「グローバル」定数は実際には外部ではありません(個別にコンパイルされ、後で一緒にリンクされます)。簡単な方法NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu";でヘッダー ファイルに配置します。メソッド ファイルには何も必要ありません。

#define kNotificationUpdateMainMenu @"kNotificationUpdateMainMenu"スペルチェックを実行するために使用します。コンパイラは、コンパイル全体で定数文字列の共有インスタンスを 1 つ作成します。

于 2012-10-29T15:16:43.187 に答える