2

@selector(@"name")Objective-C では、 How can I access the following constant by name at runtime? を使用してセレクターを名前で参照できることを知っています。つまり、@"CONST_KEY"どこかを通り過ぎて@"key"戻ってくるということです。

const NSString* CONST_KEY = @"key";

最初にキーと値の辞書を作成し、実行時にクエリを実行することでこれを行うことができると思いますが、より良い実装があるかどうかはわかりません。

特定のユース ケースを明確にするために:ストーリーボードで宣言され
たコレクション ビュー セル再利用識別子を使用し、この識別子を使用して実行時に の値を検索できるようにしたいと考えています。@"CONST_KEY"CONST_KEY

このようにして、複数のクラスで値を再割り当てするのではなく、定数を変更するためのコード内の 1 つの場所を確保したいと考えています。2 つの値をリンクすると、 を使用してすべてのセルに対して 1 つのアクションを実行しCONST_KEY、実行するアクションを定義できます。

4

2 に答える 2

-1

定数を取得するためにセレクターを呼び出す必要はありません。それを他のクラスに公開するだけで済みます。また、定数は関連するクラス内に存在する必要があります。私が使用する方法は次のとおりです。

import ステートメントのすぐ下 (@interface の前) のヘッダー ファイルで、次のように宣言します。

extern NSString *const CONST_KEY;

同じ場所 (@interface と @implementation の上) の実装ファイルで、これを宣言します。

NSString *const CONST_KEY = @"key";

それを行った後、定数を宣言したクラスをインポートするクラスでは、 CONST_KEY で簡単に参照できるようになります

例えば

[someDictionary objectForKey: CONST_KEY];

また

NSLog(@"%@", CONST_KEY); 

etc etc – この規則を使用すると、型の安全性が向上します。いつも使っています。

于 2015-04-08T15:40:57.303 に答える