在enumerateObjectWithBlock中添加一个集合(可变的NSArray/NSDictionary)是否安



这段代码执行安全吗?也就是说,它是安全的添加到nsmutablelearray或NSMutableDictionary并发?

- (NSArray *)batchProcess:(NSArray *)inputList {
    NSMutableArray *outputList = [NSMutableArray arrayWithCapacity:inputList.count];
    [inputList enumerateObjectsWithOptions:NSEnumerationConcurrent 
               usingBlock:^(id thing, NSUInteger index, BOOL *stop){
        id processedThing = [self doProcessingOn:thing];
        [outputList addObject:processedThing];
    }];
    return outputList;
}

是否安全添加到nsmutablelearray或NSMutableDictionary并发?

除非你提供你自己的同步机制,保证在任何给定的时间只有一个线程使用它,它是不安全的。如果你以非线程安全的方式使用它,你应该期待未定义的行为。

最新更新