最近我正在使用enumerateKeysAndObjectsUsingBlock:
,今天当我的一位同事在工作场所指出可以从单独的线程调用此枚举方法并且我的代码可能无法按预期工作时,我犹豫了。他甚至建议我应该使用快速枚举。问题是我真的喜欢enumerateKeysAndObjectsUsingBlock:
和不喜欢快速枚举,因为它在字典方面的性质。
我的方法如下
- (NSArray *)someMethod
{
__block NSMutableArray *myArray = [NSMutableArray array];
[self.myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[myArray addObject:obj];
}
return myArray;
}
我可以确定 myArray 将始终返回预期值(假设self.myDictionary
不为空)并且始终在与 someMethod 相同的线程上调用它吗?
我知道有一个方法enumerateKeysAndObjectsWithOptions:usingBlock:
,使用选项调用它NSEnumerationConcurrent
会在多个线程上同时运行枚举。
但我找不到任何关于enumerateKeysAndObjectsUsingBlock
.
同样是指enumerateObjectsUsingBlock:
在数组上使用。