NSString和NSMutableString的区别(NSAr

2019-04-13  本文已影响0人  萝卜丝巾

其实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倍!!!!!!

上一篇下一篇

猜你喜欢

热点阅读