是什么目标C以实例的帮助的NSString和的NSMutableString之间的实际差异? [

2019-09-02 09:12发布

这个问题已经在这里有一个答案:

  • 什么是同时具有的NSMutableString和NSString的目的是什么? 4个回答
  • 是什么的NSString和的NSMutableString之间的区别? [重复] 4个答案

是什么在Objective-C的NSString和NSMutable字符串之间的实际差异? 我已经搜索了很多,但没有得到任何answer..I明白的NSString是不可改变的对象,是的NSMutableString可变对象,但我想知道有example..Please的帮助下它们之间的区别帮我..

现在问题已经解决了..

Answer 1:

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

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目标是不变的,但是,这并不更改它指向一个字符串变量的值阻止你。



Answer 2:

的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对象,它原来指向。



Answer 3:

在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]