NSString和NSMutableString

NSString不可变字符串

NSString *str = @“123”;

str = @“234”;

每次给str赋值都会开辟新的内存,而指针str只是改变了它的指向。

如果用到stringByAppendingString

NSString *str = @“”;

[str stringByAppendingString:@“123”];

[str stringByAppendingString:@“234”];

每执行一次这个方法都会重新开辟内存,重新开辟内存是很消耗资源的,所以NSString太多的stringByAppendingString调用,对性能会有很大的影响

解决方法:

NSMutableString是可变字符串

一次性开辟一定大小的内存用来存放字符串,如果当前字符串没有超出内存,就可以继续往里面填,如果超出,就会重新开辟一块更大的内存,把原来的字符串copy过来,以前的内存回收

当需要频繁变动字符串的时候,最好用NSMutableSting

如果不确定字符串是否变动最好用copy修饰,因为它会开辟新的内存把字符串保存进去,这样不管被赋予的字符串吃否可变,取到的都是最初赋予的那个值。

你可能感兴趣的:(NSString和NSMutableString)