服務類具有設置在串行隊列中的非原子屬性。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