Hi again,

in my project, I have a managed object A, that has a relationship to an other 
managed object B, itself in relation with a third object C (which happens to be 
a CALayer, therefore is not part of Core Data): A -> B -> C.

The object A I register in a NSArrayController, whose content is linked to a 
NSCollectionView. The NSView I use to visually represent the NSArrayController 
contents includes a slider that observes a parameter of C (more specifically, 
opacity) through KVO.

So far, so good.

I have a NSButton in C to remove from the array controller the A object it 
represents. However, each time I click on that button, I first get a warning 
telling me that I remove an observed object before releasing the observer, and 
then the program crash, albeit:
- I've set the relation option between A and B to leave B alone when A is 
deallocated;
- I keep a temporary pointer on A and release C before A is removed from the 
array controller.

NSArrayController controller;
id A, B, C

(void)removeA:(id)sender {
        id tmp = [A retain];
        [controller removeObject:A];
        [[[A getB] getC] release];
        [[A getB] release];
        [tmp release];
}

It seems the object in the NSCollectionView persists some time after A is 
removed from the array. Of course, I could twist the action and redirect it 
somehow to the slider so it would unregister (which would mean somehow 
subclassing it) and then pass a message the remove message to A. Is there any 
simpler solution ?

I hope this is not too obscure.

Thanks,
Vincent_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to