本文介绍了NSMutableArray enumerateObjectsUsingBlock不是同步的,苹果说的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是错误吗?

我有这样的行:

[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

     NSLog(@"%d", idx);
}];

NSLog(@"end");

这应该打印

"0"
"1"
"2"
...
"end"

但它正在打印

"end"
"0"
"1"
"2"
...

Apple说 enumerateObjectsWithOptions:usingBlock:是同步的,因此在枚举之前不应该打印end,对吗?

Apple says enumerateObjectsWithOptions:usingBlock: is synchronous, so "end" should not be printed before the enumeration, right?

你能确认吗?

推荐答案

enumerateObjectsUsingBlock:肯定是同步的。我只是在CodeRunner中运行相同的示例:

enumerateObjectsUsingBlock: is definitely synchronous. I just ran the same example in CodeRunner:

NSArray *myArray = @[ @1, @2, @3, @4, @5 ];
[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"%d", idx);
}];

NSLog(@"end");

得到以下输出:

0
1
2
3
4
end

这篇关于NSMutableArray enumerateObjectsUsingBlock不是同步的,苹果说的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 12:05