[解決済み] 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)
関連
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] JavaScriptに定数はありますか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み】Ruby on Rails。グローバル定数を定義する場所はどこですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンカーコマンドが終了コード1で失敗(起動を確認するには-vを使用)、Xcode 8、Swift 3
-
[解決済み] CFNetwork SSLHandshakeに失敗しました(-9824) NSURLSession/NSURLConnection HTTPのロードに失敗しました(kCFStreamErrorDomainSSL, -9824)
-
[解決済み] エラーです。cocoapodsでRestKitをインストール後、「サンドボックスがPodfile.lockと同期していない...」と表示される
-
[解決済み] Xcode Simulatorのアニメーションをエディタで再生すると、極端に遅くなる。
-
[解決済み] ERROR ITMS-9000: "Redundant Binary Upload. 列車 '1.0' のビルドバージョン '1.0' のバイナリアップロードが既に存在します" と表示されました。
-
[解決済み] UIViewController viewDidLoad vs. viewWillAppear。適切な役割分担とは?
-
[解決済み] 配列型 'int [16]' は代入不可能です。
-
[解決済み] Unwind segue - インスタンスメソッドのみ @IBAction を宣言でき、ボタンが Exit に接続しない
-
[解決済み] Xcode 6: iOS 8.1 The Developer Disk Imageをマウントできませんでした。
-
[解決済み] 「FOUNDATION_EXPORTとexternの比較