iOS:来自另一个线程的Objective-C属性调用为空

问题描述:

我有单身人士,其中几个类和线程正在更新NSMutableArray。但是当访问NSMutableArray来查看NSMutableArray的内容是空的。iOS:来自另一个线程的Objective-C属性调用为空

这是我的代码部分:

@property (strong, nonatomic) NSMutableArray *myArray; 

-(NSMutableArray*) myArray{ 
    if (_ myArray == nil) { 
     _myArray = [[NSMutableArray alloc]init]; 
    } 
    return _myArray; 
} 

-(void)addToArray:(NSString*)myString{ 
    [self.myArray addObject:myString]; 
} 

任何你知道为什么NSMutableArrays始终是空的?

我会很感激你的帮助

+0

之间存在_和myArray的一个空间?这是你的问题或你的实际代码中的错字? NSMutableArray不是线程安全的。我建议你使用串行调度队列或@synchronized来保护它免受并发访问。你也应该使用dispatch_once块来分配你的数组 – Paulw11

+0

@ Paulw11,是的,这是一个错字。你可以发表一个如何使用@ synchronized的例子吗? – user2924482

这可能是许多类读/写此阵在同一时间,这样就产生错误值。你需要的是将操作同步到这个数组。

这里是一个很好的答案:

Does @synchronized guarantees for thread safety or not?