1. ホーム
  2. ios

[解決済み] Objective-Cの定数

2022-02-19 12:54:44

質問

を開発中です。 Cocoa アプリケーションで、定数 NSString をプリファレンスのキー名として保存する方法です。

必要に応じて簡単にキーを変更することができるので、良いアイデアだと理解しています。
さらに、「データとロジックを分離する」という考え方もあります。

<ブロッククオート

とにかく、これらの定数をアプリケーション全体で一度定義する良い方法はないでしょうか?

簡単で賢い方法があると思いますが、今のところ私のクラスは使用するものを再定義しているだけです。

どのように解決するのですか?

以下のようなヘッダーファイルを作成する必要があります。

// Constants.h
FOUNDATION_EXPORT NSString *const MyFirstConstant;
FOUNDATION_EXPORT NSString *const MySecondConstant;
//etc.

(を使用することができます)。 extern の代わりに FOUNDATION_EXPORT C/C++の混在環境や他のプラットフォームで使用されない場合)

このファイルは、定数を使用する各ファイル、またはプロジェクトのプリコンパイルされたヘッダーにインクルードすることができます。

これらの定数を定義するのは .m のようなファイルを作成します。

// Constants.m
NSString *const MyFirstConstant = @"FirstConstant";
NSString *const MySecondConstant = @"SecondConstant";

Constants.m は、最終的にリンクされるように、アプリケーション/フレームワークのターゲットに追加する必要があります。

の代わりに文字列定数を使用する利点は #define d定数は、ポインタの比較を使って等価性をテストすることができます ( stringInstance == MyFirstConstant ) は、文字列の比較よりもはるかに高速です ( [stringInstance isEqualToString:MyFirstConstant] ) (そして読みやすい。IMO)