ここ数日間、いくつかの基本を調べてきましたが、NSString/NSMutableString の参照渡しが機能しない理由を本当に理解していないことに気付きました。
- (void)testing{
NSMutableString *abc = [NSMutableString stringWithString:@"ABC"];
[self testing:abc];
NSLog(@"%@",abc); // STILL ABC
}
-(void)testing:(NSMutableString *)str {
str = [NSMutableString stringWithString:@"HELP"];
}
どうすればいいですか?テスト メソッドでメイン メソッドから String を操作できるようにしたいと考えています。私はこれを可変配列、辞書などで使用しており、正常に動作します。これが文字列でどのように機能するかを私がまったく理解していなかったのは奇妙に感じます。
しかし、値は最初の文字列への参照であるこのようなもので変更されます
NSMutableString *string1;
NSMutableString *string2;
string1 = [NSMutableString stringWithString: @"ABC"];
string2 = string1;
[string2 appendString: @" HELP"];
NSLog (@"string1 = %@", string1); // ABC HELP
NSLog (@"string2 = %@", string2); // ABC HELP