サービス クラスには、シリアル キューに設定される非アトミック プロパティがあります。
@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;
}
でゲッターが呼び出されたときにアプリがクラッシュしましたobjc_autorelease + 6
。これは、runtime/Clang/llvm 呼び出しのようです。
status
また、クラッシュ ログは、プロパティがqueue
スレッドに設定されたことも示していました。
アクセサーに原子性がないためにクラッシュしましたか? はいの場合、ゲッターがインスタンスの保持に失敗した方法と理由は? 自動解放プールは、合成された非アトミック セッター内で排出されましたか?
getter/setter メソッドを実装して、queue
/a ミューテックス ロックで保護する必要がありますか?