服务类具有设置在串行队列中的非原子属性。ARC的多线程autorelease问题?
@interface Service
@property (strong, nonatomic) NSDictionary *status;
@property (nonatomic) dispatch_queue_t queue;
...
@end
- (void)update:(NSDicationary *)paramDict {
dispatch_async(self.queue, ^{
....
self.status = updateDict;
}
}
- (void)someMethod {
NSDictionary *status = self.status;
}
该应用程序崩溃被调用getter方法时,在objc_autorelease + 6
,这似乎是一个运行时/锵/ LLVM调用。
并且崩溃日志还显示status
属性刚设置在queue
线程上。
是否因为访问器中缺乏原子性而崩溃?如果是,那么如何以及为什么吸气剂保留实例失败?自动释放池是否在合成的非原子设定器内部排空?
我应该实施getter/setter方法,使用queue
/mutex锁来保护它吗?
什么是例外? – Rob