第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在Objective-C中反轉(zhuǎn)NSArray?

如何在Objective-C中反轉(zhuǎn)NSArray?

慕慕森 2019-07-23 16:25:04
如何在Objective-C中反轉(zhuǎn)NSArray?我需要扭轉(zhuǎn)我的態(tài)度NSArray。舉個(gè)例子:[1,2,3,4,5] 必須成為: [5,4,3,2,1]實(shí)現(xiàn)這一目標(biāo)的最佳方法是什么?
查看完整描述

3 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

為了得到陣列的反轉(zhuǎn)副本,看danielpunkass'溶液使用reverseObjectEnumerator。

要反轉(zhuǎn)可變數(shù)組,可以在代碼中添加以下類別:

@implementation NSMutableArray (Reverse)- (void)reverse {
    if ([self count] <= 1)
        return;
    NSUInteger i = 0;
    NSUInteger j = [self count] - 1;
    while (i < j) {
        [self exchangeObjectAtIndex:i
                  withObjectAtIndex:j];

        i++;
        j--;
    }}@end


查看完整回答
反對 回復(fù) 2019-07-23
?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

如果您利用內(nèi)置reverseObjectEnumerator方法NSArray和以下allObjects方法,有一個(gè)更容易的解決方案NSEnumerator

NSArray* reversedArray = [[startArray reverseObjectEnumerator] allObjects];

allObjects記錄為返回一個(gè)數(shù)組,其中包含尚未遍歷的對象nextObject,按順序:

此數(shù)組以枚舉順序包含枚舉器的所有剩余對象。


查看完整回答
反對 回復(fù) 2019-07-23
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

一些基準(zhǔn)

1. reverseObjectEnumerator allObjects

這是最快的方法:

NSArray *anArray = @[@"aa", @"ab", @"ac", @"ad", @"ae", @"af", @"ag",
        @"ah", @"ai", @"aj", @"ak", @"al", @"am", @"an", @"ao", @"ap", @"aq", @"ar", @"as", @"at",
        @"au", @"av", @"aw", @"ax", @"ay", @"az", @"ba", @"bb", @"bc", @"bd", @"bf", @"bg", @"bh",
        @"bi", @"bj", @"bk", @"bl", @"bm", @"bn", @"bo", @"bp", @"bq", @"br", @"bs", @"bt", @"bu",
        @"bv", @"bw", @"bx", @"by", @"bz", @"ca", @"cb", @"cc", @"cd", @"ce", @"cf", @"cg", @"ch",
        @"ci", @"cj", @"ck", @"cl", @"cm", @"cn", @"co", @"cp", @"cq", @"cr", @"cs", @"ct", @"cu",
        @"cv", @"cw", @"cx", @"cy", @"cz"];NSDate *methodStart = [NSDate date];NSArray *reversed = [[anArray reverseObjectEnumerator] allObjects];NSDate *methodFinish = [NSDate date];NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];NSLog(@"executionTime = %f", executionTime);

結(jié)果: executionTime = 0.000026

2.迭代reverseObjectEnumerator

這速度在1.5x到2.5x之間:

NSDate *methodStart = [NSDate date];NSMutableArray *array = [NSMutableArray arrayWithCapacity:[anArray count]];NSEnumerator *enumerator = [anArray reverseObjectEnumerator];for (id element in enumerator) {
    [array addObject:element];}NSDate *methodFinish = [NSDate date];NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];NSLog(@"executionTime = %f", executionTime);

結(jié)果: executionTime = 0.000071

3. sortedArrayUsingComparator

速度在30x到40x之間(這里沒有驚喜):

NSDate *methodStart = [NSDate date];NSArray *reversed = [anArray sortedArrayUsingComparator: ^(id obj1, id obj2) {
    return [anArray indexOfObject:obj1] < [anArray indexOfObject:obj2] ? NSOrderedDescending : NSOrderedAscending;}];NSDate *methodFinish = [NSDate date];NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];NSLog(@"executionTime = %f", executionTime);

結(jié)果: executionTime = 0.001100

[[anArray reverseObjectEnumerator] allObjects]在速度和輕松方面,明顯的贏家也是如此。


查看完整回答
反對 回復(fù) 2019-07-23
  • 3 回答
  • 0 關(guān)注
  • 1241 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號