In my arc app I dispose of observers in -dealloc. The pattern I have established seems to work well but one case has me rethinking my approach. Everything pivots around NSViewController -representedObject;
- (void)setRepresentedObject:(id)object { if (self.representedObject) [self removeObservers]; [super setRepresentedObject:object]; if (self.representedObject) [self addObservers]; } - (void)dealloc { if (self.representedObject) [self removeObservers]; } In my query case I have subclassed NSTableCellView. The principle is the same, but the signatures now are: - (void)setObjectValue:(id)object { if (self.objectValue) [self removeObservers]; [super setObjectValue:object]; if (self.objectValue) [self addObservers]; } - (void)dealloc { if (self.objectValue) [self removeObservers]; } Crucially I find that in this case after my subclass -dealloc the superclass -dealloc calls -setObjectValue : nil which causes observation warnings to be issued (I always try and clear these types of issues because at the very least they mask real problems) as _objectValue will still be non nil and [self removeObservers] gets called again. Is it normal for superclasses to message during dealloc? I could be triggering any sequence of non dealloc friendly actions as a result of the call to -setObjectValue:. Obviously I can use another property to track whether observations have been removed but that is just more glue. Perhaps I just need to treat NSTableCellView as a special case and get out the belt and braces? Thanks Jonathan _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com