我需要澄清NSString和NSMutableString之间的区别.可以简单地扩展一下吗?
Meh*_*tri 36
假设你有这样的代码
NSString *s = [[NSString alloc] initWithString:@"Hello"];
s = [s stringByAppendingString:@"World"];
Run Code Online (Sandbox Code Playgroud)
和其他类似的代码
NSMutableString *ms = [[NSMutableString alloc] initWithString:@"Hello"];
[ms appendString:@"World"];
Run Code Online (Sandbox Code Playgroud)
在功能上,这两者都做同样的事情,除了一个区别 - 顶部代码块泄漏. - [NSString stringByAppendingString:]生成一个新的不可变NSString对象,然后告诉指针指向.但是,在此过程中,您可以孤立最初指向的NSString对象.如下更换线将消除泄漏:
s = [[s autorelease] stringByAppendingString:@"World"];
Run Code Online (Sandbox Code Playgroud)
Fur*_*rqi 36
NSMutableString和NSString之间的区别在于
NSMutableString: NSMutableString对象提供了修改它们所代表的基础字符数组的方法,而NSString则没有.例如,NSMutableString公开了诸如appendString,deleteCharactersInRange,insertString,replaceOccurencesWithString等方法.所有这些方法都对字符串进行操作,因为它存在于内存中.
NSString:另一方面,如果你愿意的话,只有一个create-once-then-read-only字符串 ; 你会发现它的所有"操作"方法(substring,uppercaseString等)返回其他NSString对象,从不实际修改内存中的现有字符串.
一旦NSString实例初始化,它就无法修改 - 它是"不可变的".没有NSString方法可以修改字符串的值.
另一方面,NSMutableString可以在初始化后进行修改.
| 归档时间: |
|
| 查看次数: |
15021 次 |
| 最近记录: |