On Apr 7, 2009, at 2:59 AM, Christiaan Hofman wrote:
Adam, I've noted a few bugs in your fileview bindings.
Most important is that that you're observing the wrong keyPath for the
content binding ("content" is the name on the FileView, keyPath is the
path on the observable).
Heh, that was a fat-finger error that had some pretty serious consequences. Thanks!
Also, it's wrong to assume that the observed value is a proxy mutable array. In fact, you should always copy the array and properly update in the KVO observation
That was my understanding as well, and was my original implementation. Since I was observing content instead of arrangedObjects, though, things like changing order didn't work unless I kept a pointer to the proxy array (or something like that...it was a long time ago).
Also you should not need to implement KVC accessors for content.
I don't think so either, but IB seems to call it (even if not calling super for the content binding).
I think the problem with IB you note may have to do with the fact that you don't update the value initially in -bind:..., I usually do that by explicitly calling a KVO observation from -bind:...
I no longer recall that problem precisely, so I'll have to check it out...
Also, selectionIndexes could easily go through the default binding mechanism, as it's a KVC compliant key. I think the self observation of selectionindexes is dangerous. Updating a binding should never be triggered by the setter, you never know what loops are there. It should always be similar to actions: triggered by a user interaction. Moreover there's the viewWillMoveToSuperview hack. I have done this by adding a private version of setSelectionIndexes: that updates the binding and anything that's needed, and use that internally.
To what are you referring as a hack? Unbinding in viewWillMoveToSuperview? How are bindings unbound otherwise? In that case I think I was mainly following mmalc's example code.
I've thought about something similar to what you suggest with respect to selection indexes, but never got around to it (I mainly didn't feel like debugging it).
smime.p7s
Description: S/MIME cryptographic signature
------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com
_______________________________________________ Bibdesk-develop mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bibdesk-develop
