在示例的帮助下,目标C中的NSString和NSMutableString之间的实际区别是什么?

use*_*279 -2 objective-c nsstring nsmutablestring

Objective-C中NSString和NSMutable String之间的实际区别是什么?我已经搜索了很多但没有得到任何答案..我明白NSString是Immutable对象而NSMutableString是Mutable对象但我想通过一个例子来理解它们之间的区别..请帮助我..

现在问题已经解决..

Dha*_*ngh 14

不可变的字符串.....

NSString *str1 = @"Hello Testing";
NSString *str2 = str1;
Run Code Online (Sandbox Code Playgroud)

替换第二个字符串

str2 = @"Hello hehehe";
Run Code Online (Sandbox Code Playgroud)

并列出他们当前的值

NSLog(@"str1 = %@, str2 = %@", str1, str2);
//logs as below
//str1 = Hello Testing, str2 = Hello hehehe
Run Code Online (Sandbox Code Playgroud)

可变字符串

设置两个变量以指向相同的字符串

NSMutableString * str1 = [NSMutableString stringWithString:@"Hello Testing"];
NSMutableString * str2 = str1;
Run Code Online (Sandbox Code Playgroud)

替换第二个字符串

[str2 setString:@"Hello ikilimnik"];
Run Code Online (Sandbox Code Playgroud)

//并列出他们当前的值

NSLog(@"str1 = %@, str2 = %@", str1, str2);
//logs as below
//str1 = Hello ikilimnik, str2 = Hello ikilimnik
Run Code Online (Sandbox Code Playgroud)

请注意,当您使用不可变字符串类时,字符串的唯一方法replace是创建新字符串并更新您的变量str2以指向它.

然而,这不会影响str1指向的内容,因此它仍将引用原始字符串.

NSMutableString示例中,我们不创建第二个字符串,而是改变现有Hello Testing字符串的内容.由于两个变量都继续指向同一个字符串对象,因此它们都会在调用中报告新值NSLog.

区分指针变量和它指向的实际对象很重要.一个NSString对象是不可变的,但这并不能更改它指向一个字符串变量的值阻止你.