Re: NSTableView Key Value Observing performance pickle
Re: NSTableView Key Value Observing performance pickle
- Subject: Re: NSTableView Key Value Observing performance pickle
- From: "email@hidden" <email@hidden>
- Date: Fri, 9 Apr 2010 12:34:11 +0100
I get myself into these pickles all the time with bindings and complex KVO.
All is well until you add just one more piece and down it goes.
The only solution IMHO is to disable your KVO observations piecemeal and find which interaction is kicking off the storm.
I would start by looking at selection index bindings and KVO.
Once identified you can either simplify the KVO or engineer some sort of notification coalescence.
Regards
Jonathan Mitchell
Developer
http://www.mugginsoft.com
On 9 Apr 2010, at 02:53, Chris Idou wrote:
>
>
> I seem to have got myself into some pickle with key value observing whereby things to do with NSTableView are freezing up for minutes at a time. Every time I pause the program there are things to do with adding and removing observers, but all of it is in Apple's code, so I'm not quite sure what I've done to cause this problem.
>
>
>
>
>
> #00x7fff8453d06b in append_referrer_no_lock
> #10x7fff8453ea58 in weak_register
> #20x7fff845366e2 in auto_assign_weak_reference
> #30x7fff81d6a36e in -[NSConcretePointerArray arrayGrow:]
> #40x7fff81c64cdd in -[NSConcretePointerArray addPointer:]
> #50x7fff81c6aa99 in -[NSKeyValueObservationInfo _initWithObservances:count:]
> #60x7fff81c70399 in _NSKeyValueObservationInfoCreateByRemoving
> #70x7fff81c6fcfe in -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:]
> #80x7fff81c6fc3f in -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:]
> #90x7fff81c70522 in -[NSKeyValueNestedProperty object:didRemoveObservance:recurse:]
> #100x7fff81c7077f in -[NSKeyValueUnnestedProperty object:didRemoveObservance:recurse:]
> #110x7fff81c6fd5b in -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:]
> #120x7fff81c6fc3f in -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:]
> #130x7fff81c70522 in -[NSKeyValueNestedProperty object:didRemoveObservance:recurse:]
> #140x7fff81c7077f in -[NSKeyValueUnnestedProperty object:didRemoveObservance:recurse:]
> #150x7fff81c6fd5b in -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:]
> #160x7fff81c6fc3f in -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:]
> #170x7fff810e23c7 in -[_NSModelObservingTracker _registerOrUnregister:observerNotificationsForModelObject:]
> #180x7fff810e1a07 in -[_NSModelObservingTracker clearAllModelObjectObserving]
> #190x7fff811bc4b3 in -[_NSModelObservingTracker setIndexReferenceModelObjectArray:clearAllModelObjectObserving:]
> #200x7fff811bc44c in -[NSArrayController _setObjects:]
> #210x7fff81255d9f in -[NSArrayController _arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:]
> #220x7fff811bc9ff in -[NSArrayController setContent:]
> #240x7fff8125ad66 in -[NSArrayDetailBinder _refreshDetailContentInBackground:]
> #250x7fff81c791a1 in -[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath:change:]
> #260x7fff810de96e in -[NSController _notifyObserversForKeyPath:change:]
> #270x7fff811e8575 in -[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:]
> #280x7fff811e894b in -[NSArrayController _selectObjectsAtIndexesNoCopy:avoidsEmptySelection:sendObserverNotifications:forceUpdate:]
> #290x7fff81c6f43d in -[NSObject(NSKeyValueCoding) setValue:forKey:]
> #300x7fff81ccdf42 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:]
> #310x7fff8126a3ed in -[NSBinder _setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:]
> #320x7fff8126a2a5 in -[NSBinder setValue:forBinding:error:]
> #330x7fff812655c8 in -[NSTableBinder tableView:didChangeToSelectedRowIndexes:]
> #340x7fff81261e8f in -[_NSBindingAdaptor tableView:didChangeToSelectedRowIndexes:]
> #350x7fff811368e2 in -[NSTableView _enableSelectionPostingAndPost]
> #360x7fff811f8556 in -[NSTableView mouseDown:]
> #370x7fff81199f1b in -[NSWindow sendEvent:]
> #380x7fff810cf662 in -[NSApplication sendEvent:]
>
>
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> 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:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden