黑马程序员技术交流社区
标题:
NSString
[打印本页]
作者:
1722413885
时间:
2014-4-18 19:20
标题:
NSString
本帖最后由 1722413885 于 2014-4-20 22:24 编辑
NSString是不可变字符串,是不能改变的,
为什么下面的代码还能运行成功:
NSString *s = @"sdfsfsffe";
s = [s substringWithRange:NSMakeRange(2, 3)];
NSLog(@"%@",s);
复制代码
输出结果:014-04-18 19:17:30.204 [1187:303] fsf
s的内容改变了?
作者:
罗冠坤
时间:
2014-4-18 19:47
s指针变量的这个地址的内容是不能变了,只能是aaaa
你这样的操作是把指针变量s指向的地址变了,所以内容变了
地址不变内容是不能变的,你可以分别输出s前后的地址就会发现区别
而MutableNSString就不同,地址不变内容也可以改变。
作者:
李烨
时间:
2014-4-18 21:15
NSString *s = @"sdfsfsffe";
s = [s substringWithRange:NSMakeRange(2, 3)];//这是产生了一个新的字符串,指针s指向了他,这样原来的字符串@"sdfsfsffe"就没了,再也找不回,遮掩做很危险,容易丢失数据
NSLog(@"%@",s);
复制代码
作者:
刘元明
时间:
2014-4-18 23:10
NSString *s = @"sdfsfsffe"; 这句中的s是
指针变量
,[s substringWithRange:NSMakeRange(2, 3)]返回一个的字符串;s当然可以指向它。我们说NSString是不可变字符串,在这句中指的是指针s中存储了的那个地址的存储空间不可变,也就是*s不可以变。注意区分:int a[3] = {1,2,3}; a={2,3,4};这行代码是错误的,在这里a是数组名,也就是
地址常量
,a不可变
作者:
戴文婷
时间:
2014-4-19 00:00
s = [s substringWithRange:NSMakeRange(2, 3)];
这个意思是说。
[s substringWithRange:NSMakeRange(2, 3)]
s 执行了 substringWithRange:NSMakeRange方法。从第二个字符,开始取3个字符。然后返回给s
s是指针,也就是s指向了另一个生成的字符串。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2