高效的(de)把NSMutableArray變成NSArray - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

高效的(de)把NSMutableArray變成NSArray

發表時(shí)間:2020-11-5

發布人(rén):融晨科技

浏覽次數:29

下效的(de)把NSMutableArray變成NSArray


我玫鄰辦法中部大(dà)概會用NSMutableArray,但是(shì)前來(lái)的(de)時(shí)辰欲看别的(de)進出(chū)有來(lái)改我們的(de)Array
   NSMutableArray *array1 = [@[] mutableCopy];
    for (int i = 0; i < 10000000; i++)
    {
        [array1 addObject:@(i)];
    }

    return array1;

那噶勘辰我們平強的(de)做房嗲拷貝array1大(dà)概是(shì)逝世成一個(gè)新的(de)array1
return [array1 copy];
return [NSArray arrayWithArray:array1];

那裏呢,我們挨印了(le/liǎo)下光陽
    NSMutableArray *array1 = [@[] mutableCopy];
    NSMutableArray *array2 = [@[] mutableCopy];

    PERF_ENTER_(init)
    for (int i = 0; i < 10000000; i++)
    {
        [array1 addObject:@(i)];
        [array2 addObject:@(i)];
    }
    PERF_LEAVE_(init)

    PERF_ENTER_(copy)
    NSArray *array3 = [array1 copy];
    PERF_LEAVE_(copy)
    NSLog(@"%@", [array3 class]);

    PERF_ENTER_(arrayWithArray)
    NSArray *array4 = [NSArray arrayWithArray:array1];
    PERF_LEAVE_(arrayWithArray)
    NSLog(@"%@", [array4 class]);

/*    
2015-01-07 00:57:36.869 JoinShow[1134:68543] +[XYPerformance recordName:andTime:] 'init' = 5.492105(s)
2015-01-07 00:57:37.125 JoinShow[1134:68543] +[XYPerformance recordName:andTime:] 'copy' = 0.255650(s)
2015-01-07 00:57:37.125 JoinShow[1134:68543] __NSArrayI
2015-01-07 00:57:37.373 JoinShow[1134:68543] +[XYPerformance recordName:andTime:] 'arrayWithArray' = 0.247696(s)
2015-01-07 00:57:37.373 JoinShow[1134:68543] __NSArrayI
*/

收明畸形卑せ個(gè)哪當ツ倒array必要(yào / yāo)0.2s,罩窩經是(shì)出(chū)有磕骣有及忍的(de)光陽了(le/liǎo).必要(yào / yāo)對辦法盡行劣化.
紊的(de)實量是(shì)甚麽,勢兌們必要(yào / yāo)前來(lái)一個(gè)弗成變的(de)array,是(shì)以(yǐ)我們可能曲接把 NSMutableArray 東西的(de)isa 建改成 NSArray.
- (NSArray *)immutable
{
    object_setClass(self, [NSArray class]);
    return self;
}

    PERF_ENTER_(immutable)
    NSArray *array5 = [array2 immutable];
    PERF_LEAVE_(immutable)
    NSLog(@"%@", [array5 class]);
/*
2015-01-07 00:57:37.373 JoinShow[1134:68543] +[XYPerformance recordName:andTime:] 'immutable' = 0.000030(s)
2015-01-07 00:57:37.373 JoinShow[1134:68543] NSArray
*/

看下光陽,出(chū)有雅然快很多.
-----------------
閉于(yú)那多麽做,咱隻能道(dào)念法想法是(shì)好的(de).實際...

相關案例查看更多