NSString和NSMutableString的区别(NSArray/NSDictionary)类似

其实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次之后的结果


100次循环结果

可以看出NSMutableString比NSString速度快了10倍!!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。