NSString和NSMutableString
2019-11-13 本文已影响0人
黑夜中的星辰
NSString不可变字符串
NSString *str = @“123”;
str = @“234”;
每次给str赋值都会开辟新的内存,而指针str只是改变了它的指向。
如果用到stringByAppendingString
NSString *str = @“”;
[str stringByAppendingString:@“123”];
[str stringByAppendingString:@“234”];
每执行一次这个方法都会重新开辟内存,重新开辟内存是很消耗资源的,所以NSString太多的stringByAppendingString调用,对性能会有很大的影响
解决方法:
NSMutableString是可变字符串
一次性开辟一定大小的内存用来存放字符串,如果当前字符串没有超出内存,就可以继续往里面填,如果超出,就会重新开辟一块更大的内存,把原来的字符串copy过来,以前的内存回收
当需要频繁变动字符串的时候,最好用NSMutableSting
如果不确定字符串是否变动最好用copy修饰,因为它会开辟新的内存把字符串保存进去,这样不管被赋予的字符串吃否可变,取到的都是最初赋予的那个值。