NSMutableArray的addObject方法是线程安全的吗?

艾尔克拉尔逊

我知道NSMutableArray不应被认为是线程安全的,但是如果我仅调用[array addObject:object]并且这样做时不以其他任何方式访问该数组怎么办?

例如:

NSMutableArray* array = [[NSMutableArray alloc] init];
[self.subviews
  enumerateObjectsWithOptions:NSEnumerationConcurrent
  usingBlock:^(UIView* view, NSUInteger idx, BOOL *stop) {
    if ([self methodThatReturnsBool:view]) [array addObject:view];
  }];

感谢您的任何建议!:)

卡盘

NSMutableArray不能保证是线程安全的-甚至不只是添加对象,因为要使该线程安全将需要addObject:是原子操作,这不是该类协定的一部分。

通常,如果文档中说“这是线程安全的”,则它是线程安全的(至少是隔离的),但是如果文档中没有这样说,则应假定它是不安全的,并且需要使用同步。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章