这个问题已经在这里有一个答案:
- 什么是同时具有的NSMutableString和NSString的目的是什么? 4个回答
- 是什么的NSString和的NSMutableString之间的区别? [重复] 4个答案
是什么在Objective-C的NSString和NSMutable字符串之间的实际差异? 我已经搜索了很多,但没有得到任何answer..I明白的NSString是不可改变的对象,是的NSMutableString可变对象,但我想知道有example..Please的帮助下它们之间的区别帮我..
现在问题已经解决了..
不可改变的字符串.....
NSString *str1 = @"Hello Testing";
NSString *str2 = str1;
更换第二个字符串
str2 = @"Hello hehehe";
并列出它们的当前值
NSLog(@"str1 = %@, str2 = %@", str1, str2);
//logs as below
//str1 = Hello Testing, str2 = Hello hehehe
可变字符串
设置两个变量指向相同的字符串
NSMutableString * str1 = [NSMutableString stringWithString:@"Hello Testing"];
NSMutableString * str2 = str1;
更换第二个字符串
[str2 setString:@"Hello ikilimnik"];
//并列出它们的当前值
NSLog(@"str1 = %@, str2 = %@", str1, str2);
//logs as below
//str1 = Hello ikilimnik, str2 = Hello ikilimnik
请注意,当您使用一成不变的字符串类的唯一方式replace
字符串是创建一个新的字符串并更新变量str2
指向它。
然而,这并不影响什么str1和指向,所以它仍然会引用原始的字符串。
在NSMutableString
例子中,我们不创建第二个字符串,而是改变现有的内容Hello Testing
字符串。 由于这两个变量继续指向相同的字符串对象,他们都将在报告中呼吁新的价值NSLog
。
它的指针变量,它指向的实际的对象之间进行区分是重要的。 一个NSString
目标是不变的,但是,这并不更改它指向一个字符串变量的值阻止你。
的NSMutableString和NSString的区别:
的NSMutableString:的NSMutableString对象提供方法来修改它们表示字符的基本阵列,而的NSString没有。 的NSMutableString公开的方法,如appendString,deleteCharactersInRange,insertString,replaceOccurencesWithString等。所有这些方法对字符串进行操作,因为它存在于内存中。
NSString的 :它是一个一次性创建,当时只读字符串 ,如果你; 你会发现,它所有的“操作”的方法(串,uppercaseString等)返回其他NSString对象实际上从未修改内存中现有的字符串。
例如:
NSString *simpleString = [[NSString alloc] initWithString:@"simple String"];
simpleString = [simpleString stringByAppendingString:@"OK"];
NSMutableString *mutableString = [[NSMutableString alloc] initWithString:@"MutableString"];
[mutableString appendString:@"OK"];
这两种,在功能上,做同样的事情,但除外-顶部代码块泄漏 。
[NSString stringByAppendingString:]
产生一个新的不可变的NSString对象 ,你再告诉指针指向。 在这个过程中,但是,你孤儿的NSString对象,它原来指向。
在Objective C,两种类型的串的对象的是有一个是可变的和不可变的。
要创建我们使用一个不变的字符串NSString
,创造我们使用一个可变的字符串NSMutableString
。
如果我们正在创建使用字符串对象NSString
,它是一个不可变的字符串对象。 这意味着字符串不能随后在任何方式修改。 (虽然任何的NSString指针可以重新分配给新的NSString对象)。
NSString *string1 = @"immutable String";
对于可变字符串,我们使用NSMutableString
,这是一个子类NSString
。
要指定一个可变的字符串对象:
NSMutableString *string2 = [NSMutableString stringWithString:@"Mutable String"];
要么
NSMutableString *string2 = [NSMutableString stringWithString: string1]; // string1 is a NSString(immutable)
文章来源: what is actual difference between NSString and NSMutableString in objective C with the help of example? [duplicate]