黑马程序员技术交流社区
标题:
Foundation中的NSMutableString问题
[打印本页]
作者:
gamyc
时间:
2015-5-28 10:46
标题:
Foundation中的NSMutableString问题
//创建可变字符串
NSMutableString *str = [NSMutableString string];
//设定字符串的内容
str.string = @"zhangsan";
//创建对象
Person *person = [Person new];
//给person的实例变量赋值
person.name = str;
//修改字符串内容
[str appendString:@"xxxx"];
NSLog(@"name = %@",person.name);
NSLog(@"str = %@",str);
复制代码
为什么运行结果是:
name = zhangsanxxxx
str = zhangsanxxxx
而不是:
name = zhangsan
str = zhangsanxxxx
作者:
gamyc
时间:
2015-5-28 10:53
貌似定义 Person中 的name的时候是这样定义的:NSString *name;
这样就一改全改了。
作者:
hui1107464497
时间:
2015-5-28 11:49
//给person的实例变量赋值
person.name = str;
这样就使得person.name 这个属性指向了str的内存地址,你改变str了,那么这个属性的值也会跟着变的
作者:
yuang4074
时间:
2015-5-28 14:23
无论是person.name还是str,它俩都指向的一个字符对象。当person.name = str; 时表示它俩指向的是同一个字符对象。 [str appendString:@"xxxx"];//这句是通过str找到它指向的对象进行了修改。注意此时person.name也指向这个对象。哈哈,当通过person.namer找到它指向的对象,不也变了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2