Skip navigation.
 
mlRe: The KVO Race
FROM : Gordon Apple
DATE : Tue Jun 03 23:29:38 2008

OK, if I understand the documentation correctly, the first suggestion
might work.  Thanks.

    I don't think the second one is applicable here.  (I have used that
successfully within one class.)

    Yes, the observed editLayer in displayController was being observed by
the displayEditcontroller.  The NSIndexSet was being observed by the
displayController.  These had to be set in their respective "awakeFromNib"
because the connections had to be in place to get access to the document to
ger the NSIndexSet (i.e., the path through the data hierarchy to get to the
Shot and Layer).

>> I have traced the problem to KVO race conditions.

>
> In most cases these can be solved by setting up the key dependencies
> and occasionally by using the NSKeyValueObservingOptionInitial
> (Leopard only) option.
>
> From your summary, I'm assuming that the editLayer property is
> dependent on the NSIndexPath that you're also observing.
>
> So, if you're targeting 10.4 you can use the
> +setKeys:triggerChangeNotificationsForDependentKey: method in your
> controller's +initialize method to set the dependencies. This method
> is deprecated in Leopard in favor of the
> +keyPathsForValuesAffectingValueForKey: method. Look them up in the
> documentation for how to use them.
>
> Keith

Related mailsAuthorDate
mlThe KVO Race Gordon Apple Jun 3, 18:53
mlRe: The KVO Race Hamish Allan Jun 3, 19:21
mlRe: The KVO Race Gordon Apple Jun 3, 21:20
mlRe: The KVO Race Keith Duncan Jun 3, 22:46
mlRe: The KVO Race Gordon Apple Jun 3, 23:29
mlRe: The KVO Race Hamish Allan Jun 4, 20:37