黑马程序员技术交流社区
标题:
NSString 和NSMutableString 的区别,都可以添加字符串啊???
[打印本页]
作者:
马丁
时间:
2015-4-16 12:11
标题:
NSString 和NSMutableString 的区别,都可以添加字符串啊???
从名字上来看,不应该是前者不可变,也就是不能在添加字符串吗,但是还是有这样的用法:
NSString *s2 = [NSString stringWithFormat:@"age is 10"];
NSString *s3 = [s2 stringByAppendingString:@" 11 12"];
而NSMutableString 也有这样的用法:
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
// 拼接内容到s1的后面
[s1 appendString:@" 11 12"];
那这样的话,二者一个可变,一个不可变,岂不是不成立了。
作者:
丶小千
时间:
2015-4-16 12:24
是不可变的,s2的值仍然没有变,s3是s2的串加上11 12,s3是刚创建好的,创建好的串是不可变的,你又没有用方法改变S2或者S3的值
作者:
马丁
时间:
2015-4-16 12:26
头像其实是@
作者:
Answer_QJ2Fq
时间:
2015-4-16 12:28
这两个区别是,NSString 是不可变,字符串拼接返回的是新的字符串,而不是去改变原来的字符串,而nsmutalestring则是直接改变原来的字符串
作者:
仰望的繁华
时间:
2015-4-16 12:45
本帖最后由 仰望的繁华 于 2015-4-16 12:48 编辑
不可变的那个,添加字符串是:拼出一个新的字符串重新赋值于它。
可变的那个,添加字符串是:直接在它后面加上。
即:NSString *s1
NSMutableString *s2
s1 可以通过改变地址指向新的字符串 来实现 s1的变化。
而s2 可以直接对其 指向的地址的内容进行修改。
也就是说:可变不可变,指的是 赋值 的 “值” 本身 是否可变,而不是指操作OC对象的指针 是否可变。
作者:
无声风铃
时间:
2015-4-16 13:12
都可以添加的,NSString是不可变的,它的添加字符串是新生成一个字符串的;NSMutableString是改变的自身
作者:
shane_west
时间:
2015-4-16 13:26
no no no ~~
作者:
lvzhehappy
时间:
2015-4-16 14:01
s2字符串未发生改变,s3在内存中重新生成了一个字符串,是s2+@"11 12"的心串,s1字符串直接发生了改变
作者:
wzboy
时间:
2015-4-16 14:01
5楼已经说的很明白了,可不可变在于,mutable可以没有返回值,而NSString不行。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2