2017-02-03 5 views
2

言語と呼ばれるNSStringオブジェクトがあり、他のクラスからアクセスしたいのですが、どのような方法が適切ですか? Iは、デリゲートメソッドを作成し、デリゲートを介し他のクラスでアクセス可能なObjective-C変数

-(void)setLanguageForController:(NSString *)language { 
    self.language = language; 
} 

コンソールに文字列を送信示し

1)この

未認識セレクタインスタンスデリゲート

2)に送られた:私は、次の手順を試し私はメソッドgetCurrentLanguageを作成しました

static NSString *language; 



+(NSString*)getCurrentLanguage { 
    return language; 
} 

そしてこの

NSStringの* myLanguage =のようなアクセス[[MYVIEWのアロケーション] getCurrentLanguage]。

答えて

3

languageをクラス.hファイルのプロパティとして宣言する必要があります。

@property (nonatomic, copy) NSString* language; 

あなたは、言語設定したいときは:あなたのクラスのインスタンスinitalize

  • を:yourObj

  • call: yourObj.language = "whatever" または[yourObj setLanguage:"whatever"];

    各プロパティの宣言は、型指定で終わります名。たとえば :*タイトルをNSStringの

@property(コピー);

この構文は、次のアクセサメソッドを宣言することと等価である:

- (NSString *)title; 
- (void)setTitle:(NSString *)newTitle; 

は、Objective-Cのプロパティの詳細を読んであなたは setLanguageForControllergetCurrentLanguageまでのようなあなたの方法を作成する必要はありません here

0

他のクラスからアクセスする場合は、このような変数を取得して設定します。 propertypropertyファイルまたは.hファイルに作成する必要があります。これは公開され、propertyを含むクラスのinstance変数でどのクラスからでもアクセスできるgettersetterメソッドを提供します。

あなたはこのような.Hやクラスinterfaceファイルにあなたのpropertyを宣言することができます。それはあなたが使用できる値です設定するには

@property (nonatomic, strong) NSString* language; 

obj.language = @"value"; or [obj setLanguage:@"value"]; 

値を取得します。このような変数instanceを使用する必要があります

NSString *strLanguageValue = obj.language; 
関連する問題