Mark --

Thanks for the input.

The code for the accessor methods are shown below:

- (NSManagedObject *)wineType
{
    id tmpObject;
        DebugMessage(@"entering");

    [self willAccessValueForKey: @"wineType"];
    tmpObject = [self primitiveValueForKey: @"wineType"];
    [self didAccessValueForKey: @"wineType"];
    DebugMessage(@"exiting");

    return tmpObject;
}

- (void)setWineType:(NSManagedObject *)value
{
        DebugMessage(@"entering");

    [self willChangeValueForKey: @"wineType"];
    [self setPrimitiveValue: value
                     forKey: @"wineType"];
    [self didChangeValueForKey: @"wineType"];
    DebugMessage(@"exiting");
}

As far as I know these are correct. But I'm sure someone will tell me if they aren't ;-)

As for what changed in the app not much -- I rearranged a few things in IB (I removed an NSTableView and some related UI stuff that lived in a split view) and suddenly had this problem. I've also seen it complain about another attribute which makes me wonder if this is the result of a wandering pointer. I will check to see if for some reason something is being stored in an ivar -- just to make sure. There is an IKImageBrowserView that is bound to the NSArrayController for wine's. Have you any other hints as to how I might track this gremlin down? In the meantime I'm checking to see if there are memory leaks that might be related to the problem -- as the app is leaking a very small amount of memory.

Thanks very much.

Thaddeus O. Cooper
([EMAIL PROTECTED])



On Apr 15, 2008, at 11:31 AM, Mark Piccirelli wrote:
How are KVO notifications for the Wine class' wineType property being done? KVO is complaining that not enough of them are being sent out. The rule for KVO-compliance in this case is that something must do [wine willChangeValueForKey:@"wineType"] before the value returned by [wine valueForKey:@"wineType"] would change and then something must invoke [wine didChangeValueForKey:@"wineType"] after the value returned by [wine valueForKey:@"wineType"] has changed. Automatic KVO notification does that, but only for changes done with [wine setWineType:aWineType], if there is such a method, or [wine setValue:aWineType forKey:@"wineType"]. If the wine type is stored in an instance variable and something changes the value of that ivar without doing -willChangeValueForKey:/-didChangeValueForKey: you'll get this exception.

What changed in your app? One guess is that nothing was observing any Wine's "wineType.name" before but you're now doing something different with Cocoa Bindings that is causing it to be observed.

                                -- Mark

On Apr 14, 2008, at 6:12 PM, Thaddeus Cooper wrote:
Starting earlier today, I started getting the following error in my software.

2008-04-14 17:59:41.535 WineCellar[4928:10b] Cannot remove an observer <WineArrayController 0x25a450> for the key path "wineType.name" from <Wine 0x6c55170>, most likely because the value for the key "wineType" has changed without an appropriate KVO notification being sent. Check the KVO-compliance of the Wine class.

I haven't changed anything significant (well at least I don't think I did) and I definitely have not been messing around with the WineArrayController and/or the Wine classes. I can't figure out how to track this error down -- I've tried a number of things including putting a removeObserver:forKeyPath method in the array controller so I could look at the back trace and I've also put in enter and exit debug messages in a large portion of the code. Still the error seems to come from nowhere and I am stumped as to how I might find what the root cause of the problem is.

Does anyone have any suggestions as to how to track down this type of error.

Thanks very much.

Thaddeus O. Cooper
([EMAIL PROTECTED])



_______________________________________________

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/markp%40apple.com

This email sent to [EMAIL PROTECTED]


_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to