iOS數(shù)組enumerateXX方法探索

今天看到代碼,突然突發(fā)奇想,想要探索一個(gè)問題:
NSArray的enumerateObjectsUsingBlock方法到底是同步的還是異步的,如果我們想要在Block內(nèi)部修改外部的值,是否要使用__block來修飾

這里寫了一個(gè)簡(jiǎn)單的demo來驗(yàn)證:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.arr = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7"];
    self.count = 0;

    [self testMethod];
}

- (void)testMethod {
    NSMutableArray *arrM = [NSMutableArray arrayWithCapacity:0];
    [self.arr enumerateObjectsUsingBlock:^(NSString *str, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"內(nèi)部操作 ==>%zd",self.count++);
        [arrM addObject:str];
    }];
    
    NSLog(@"外部結(jié)束:數(shù)組=%@,==>%zd",arrM,self.count++);
}

LOG如下:

2018-09-30 14:02:14.144150+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>0
2018-09-30 14:02:14.144277+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>1
2018-09-30 14:02:14.144363+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>2
2018-09-30 14:02:14.144442+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>3
2018-09-30 14:02:14.144517+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>4
2018-09-30 14:02:14.144592+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>5
2018-09-30 14:02:14.144666+0800 testEnumerate[10209:289132] 內(nèi)部操作 ==>6
2018-09-30 14:02:14.144783+0800 testEnumerate[10209:289132] 外部結(jié)束:數(shù)組=(
    1,
    2,
    3,
    4,
    5,
    6,
    7
),==>7

可以得出結(jié)論:

enumerateObjectsUsingBlock方法是同步的,
而且,想要在block內(nèi)部修改外部的對(duì)象,也不需要__block修飾

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容