Crashlytics がこのクラッシュを報告しました:
0 libobjc.A.dylib _objc_trap() + 18446744073709552000
1 libobjc.A.dylib _objc_fatal + 71
2 libobjc.A.dylib append_referrer_no_lock(weak_referrer_array_t*, objc_object**)
3 libobjc.A.dylib objc_storeWeak + 120
4 MyApp CloudSyncButton.m line 58 -[CloudSyncButton observeValueForKeyPath:ofObject:change:context:]
5 ....
問題のコード:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
CloudSyncButton* __weak weakSelf = self; //<---crashed here
if([keyPath isEqualToString:kCloudSyncingKVO]) {
dispatch_async(dispatch_get_main_queue(), ^{
CloudSyncButton* localSelf = weakSelf;
[localSelf refreshCloudSyncIcon];
});
}
}
これがクラッシュした理由と、将来それを回避するために何ができるかを理解する助けが必要です. こんなクラッシュは初めて見たので、まぐれなのかな?