2017-06-20 12 views
0

私は現在、Objective CのクラスClassAを開発していますし、私はout id *を使用していますNSURL方法- (BOOL)getResourceValue:(out id __nullable * __nonnull)value forKey:(NSString *)key error:(out NSError ** __nullable)errorと同様の方法を実装しようとしています:のObjective C - アウトIDを使用してメソッドを実装*

私の方法は次のとおりです。- (BOOL)changeString:(out id *)theString toString:(NSString *)newString

そして私は、私の方法は、(NSStringの*)にtheStringを設定したいnewString's

私、私の方法は、次のように使用する:

id inputString; 
[[ClassA alloc] changeString:&inputString toString:@"New String"]; 

inputStringは今、私は- (BOOL)changeString:(out id *)theString toString:(NSString *)newStringでこれを行うことができますどのように(IDとして*) "新しい文字列" に

設定する必要がありますか?

おかげ

+0

渡されたパラメータは明らかにNSStringですが、なぜ不特定のIDを使用しますか? – vadian

+0

私はあなたがNSString *を渡すことができるとは思わない?私はそれが唯一のidだと思った? – Lucasware

+0

もちろん(すべての 'NSError'パラメータを参照してください)、あなたはアスタリスク'(NSString **の外に)theString'を2つ必要とします。 – vadian

答えて

0

これは非常に簡単です:

- (BOOL)changeString:(NSString * _Nonnull *)theString 
      toString:(NSString *)newString { 
    *theString = newString; 
    return YES; 
} 

そして、それを使用します。

NSString *inputString; 
BOOL result = [self changeString:&inputString toString:@"Hello World"]; 
NSLog(@"%d - %@", result, inputString); 

inputStringnilである必要はなく、あなたも値を渡すことができます

- (BOOL)changeString:(NSString * _Nonnull *)theString 
      toString:(NSString *)newString { 

    *theString = [NSString stringWithFormat: @"%@ %@", *theString, newString]; 
    return YES; 
} 

NSString *inputString = @"Hello"; 
BOOL result = [self changeString:&inputString toString:@"World"]; 
NSLog(@"%d - %@", result, inputString); 
+0

入力変数に値があった場合、または単にnullに設定されている場合、 'out'変数でデータを読み取ることができますか? – Lucasware

+0

値を渡すこともできます。 'inputString'は単なるポインタです。私は答えを更新しました。 – vadian

+0

ありがとうございます – Lucasware

関連する問題