Crashlytics reported this crash:
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 ....
The code in question:
-(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];
});
}
}
I need help understanding why this crashed and what I can do to avoid it in the future. This is the first time I've seen something like this crash, so I'm wondering if it is a fluke?
Make sure that in all cases your CloudSyncButton has removed itself from observing other objects in its dealloc method. It would appear this message is getting sent after your button has been deallocated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With