har*_*nan 0 iphone cocoa objective-c
嗨,我得到一个信息,NSString值是不可变的,一旦提供了值,就无法更改.
但是我创建并测试了以下代码:
NSString *str=[[NSString alloc] initWithString:@"Hello"];
NSLog(@"\n\nstr = %@",str);
str=@"asdasd";
NSLog(@"\n\n new str = %@",str);
Run Code Online (Sandbox Code Playgroud)
这给出了"Hello"作为第一个str值,"asdasd"作为第二个str值.如果是这样,调用NSString不可变的相关性是什么?提前感谢.
NSString是不可改变的.你不能改变它.您的混淆源于您的变量(指针)不是const.
你所做的只是将指针重新分配给另一个不可变的字符串.
如果您尝试将字符串附加到任一字符串,则会出现错误.具体来说,这是"......调用NSString不可变的相关性".你应该解释这个,因为字符串实例可能不会被改变,即使你声明的变量可能被分配了另一个NSString实例,因为它不是const.
您可以使指针const和字符串不可变,如下所示:
NSString * const aStr = @"aStr";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |