NSMutableString *str1 = [[NSMutableString alloc] initWithString:@"aaa"];
NSMutableString *str2 = [str1 retain];
NSMutableString *str3 = [str1 copy];
[str1 appendString:@"ddd"];
NSLog(@"%@,%@,%@",str1,str2,str3);
打印结果:
aaaddd,aaaddd,aaa
这说明str1和str2指向同一个对象,只不过两者跟这个对象之间都存在一个索引关系,而str3复制了指针的同时,连内容一起做了拷贝,这样str3指向了一块新的内存空间,只不过和str1指向的对象的最初的内容相同。同时这也说明了NSMutableString这个类并不是线程安全的。