Objective c 如何为一个字符串提供多个引用

Objective c 如何为一个字符串提供多个引用,objective-c,nsstring,Objective C,Nsstring,请检查下面的代码,我正在为数组创建多个引用 NSMutableArray *array1 = [[NSMutableArray alloc] init]; NSMutableArray *array2 = array1; [array1 addObject:@"One"]; [array1 addObject:@"Two"]; NSLog (@"Array1 %@",array1); NSLog (@"Array2 %@",array2); 控制台输出为 阵列1( 一,, 二)阵列2( 一,

请检查下面的代码,我正在为数组创建多个引用

NSMutableArray *array1 = [[NSMutableArray alloc] init];
NSMutableArray *array2 = array1;
[array1 addObject:@"One"];
[array1 addObject:@"Two"];

NSLog (@"Array1 %@",array1);
NSLog (@"Array2 %@",array2);
控制台输出为

阵列1( 一,, 二)阵列2( 一,, 二)

Array1和Array2都引用同一地址

就像我试过NSMutableString一样,我没有成功

NSMutableString *str1 = [[NSMutableString alloc] init];
NSMutableString *str2 = str1;
str1 = @"Hello";

NSLog (@"Str1 : %@", str1);
NSLog (@"Str2 : %@", str2);
控制台输出为Str1 Hello Str2(空)


有没有办法引用字符串?

一切都很正常。与:

str1 = @"Hello";
str1
不再指向上面两行分配的内存<代码>str2没有更改,仍然指向该内存位置

对于数组和字符串,您给出的示例看起来不一样。在第一种方法中,将对象添加到一个数组中,但不要更改任何指针的值

在第二步中,您将修改对对象的引用

第二个示例应写成如下内容:

NSMutableString *str1 = [[NSMutableString alloc] init];
NSMutableString *str2 = str1;
[str1 appendString:@"foo"];

NSLog (@"Str1 : %@", str1);
NSLog (@"Str2 : %@", str2);
输出:

Str1:foo
Str2:foo


给定同一可变字符串(一个内存位置)上的两个引用,并使用
NSMutableString
的方法,两个引用都将被修改。

我的要求是让str1和str2指向同一内存,当我更改其中任何一个字符串时,应该同时更新这两个引用,这就是我编写的代码应该做的。请参阅更新的答案