クラスAIにはこれがあります:
static NSString * const kMyConstant = @"my constant string";
これをクラス B から参照するにはどうすればよいですか?
クラスAIにはこれがあります:
static NSString * const kMyConstant = @"my constant string";
これをクラス B から参照するにはどうすればよいですか?
ヘッダーで文字列を拡張し、実装で文字列を定義する必要があります。
//ClassA.h
extern NSString * const kMyConstant;
//ClassA.m
NSString * const kMyConstant = @"my constant string";
//ClassB.h/m
#import "ClassA.h"
...
NSLog(@"String Constant: %@", kMyConstant);
これにリンクされているファイルにのみ表示static
されることを指定する--を削除する必要があります。kMyConstant
次に、クラスAのヘッダーで文字列を(定義するのではなく)宣言します。
extern NSString * const kMyConstant;
この文字列を使用する場所にそのヘッダーをインポートします。宣言は、ストレージが他の場所に作成された名前でextern
存在することを示しています。NSString * const
kMyConstant
静的定義がすでにヘッダーにある場合は、それを別の場所(通常は実装ファイル)に移動する必要があります。定義できるのは1回だけで、変数を定義するファイルをインポートしようとすると、リンカーエラーが発生します。
静的な場合はできません (これが static キーワードの目的です)。
ただし、単純にグローバル変数として宣言する場合は、次のようにすることができます。
// ClassA.m
NSString *const str = @"Foo";
// ClassB.m
extern NSString *const str;
NSLog(@"str is: %@", str);