其实NSString和NSMutableString的区别的主要区别只有一点
官方为了性能考虑!!!
NSString和NSMutableString 都是字符串拼接的API
NSString:stringByAppendingString
stringByAppendingString:返回String,由于本身的不可变性, 所以每次拼接之后都是在内存中开辟一个全新的空间来存储string,
而上次的string还在内存中,导致无用的垃圾数据,浪费内存。
image.png
NSString * str1 = @"Hello World";
CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent();
for (int i=0; i<1000; i++) {
[str1 stringByAppendingString:@"1231"];
}
CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);
NSLog(@"Linked111 in %f ms", linkTime *1000.0);
NSMutableString:appendString
appendString:没有返回值,本身可变,所以每次都是在原有内存中增加!!
image.png
NSMutableString *str4 = [NSMutableString stringWithString:@"22"];
CFAbsoluteTime startTime2 =CFAbsoluteTimeGetCurrent();
for (int i=0; i<1000; i++) {
[str4 appendString:@"1231"];
}
CFAbsoluteTime linkTime2 = (CFAbsoluteTimeGetCurrent() - startTime2);
NSLog(@"Linked22 in %f ms", linkTime2 *1000.0);
最后再看下for循环1000次之后的结果

网友评论