在enumerateObjectWithBlock中添加到集合(可变NSArray / NSDictionary)是否安全?

时间:2013-06-13 07:04:25

标签: objective-c multithreading thread-safety objective-c-blocks foundation

这段代码执行安全吗?也就是说,同时添加到NSMutableArray或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;
}

1 个答案:

答案 0 :(得分:0)

  

同时添加到NSMutableArray或NSMutableDictionary是否安全?

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