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始终是空的?
我会很感激你的帮助
答
这可能是许多类读/写此阵在同一时间,这样就产生错误值。你需要的是将操作同步到这个数组。
这里是一个很好的答案:
之间存在_和myArray的一个空间?这是你的问题或你的实际代码中的错字? NSMutableArray不是线程安全的。我建议你使用串行调度队列或@synchronized来保护它免受并发访问。你也应该使用dispatch_once块来分配你的数组 – Paulw11
@ Paulw11,是的,这是一个错字。你可以发表一个如何使用@ synchronized的例子吗? – user2924482