一类服务具有在串行队列中设置的非原子属性。
@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
,这似乎是运行时/Clang/llvm 调用。
并且崩溃日志还显示该status
属性只是在queue
线程上设置的。
它是否因为访问器中缺乏原子性而崩溃?如果是,吸气剂如何以及为什么未能保留实例?自动释放池是否在合成的非原子设置器中耗尽?
我应该实现 getter/setter 方法,用queue
/a 互斥锁保护它吗?