I have an array within a model object that is hooked up to a NSCollectionView 
via an NSArrayController and NSCollectionViewItem (i.e. standard).  The array 
elements are custom objects with a title and image property.  These are bound 
to an NSTextField and NSImageView within the view managed by the 
collection-view-item.  Hook all the bindings up and go.  It works... basically.

Problem:  the properties for EVERY element within the array are requested when 
the collection view appears on screen.  Well, really, I am binding the 
collection view to the array controller in code within awakeFromNib and the 
trouble happens at the point of binding (thus, I think the ask-for-everything 
really happens independent of the appear-on-screen issue).  Partial/edited 
backtrace:

        my call to [collectionview bind:toObject:withKeyPath:options:]
                triggers <stuff >
                        [collectionview setContent:]
                        [collectionview _getItemsToDisplay]
                        <more stuff leading to> [array-element image]

I guess "_getItemsToDisplay" does not care about what is actually being 
displayed NOW vs. the entirety of what can be displayed.

This was not what I was expecting nor wanting.  My experience in the datasource 
flavor of NSTableView led me to believe (and be happy about) UI elements not 
asking for display data until view/cell associated with said data was truly 
on-screen.  Perhaps NSTableView is just as greedy about touching every element 
once you depend on bindings (but I'm guessing not).

Question:  can this behavior be avoided through simple means?  I have seen some 
related discussions ( 
http://lists.apple.com/archives/Cocoa-dev/2009/Jan/msg01536.html ) but I 
believe the discussed situations (and potential solutions to them) do not cover 
my setup (which I think would be a common one).  I don't need to build the 
array-like structure as I go and, thus, I don't care if some part of bindings 
asks for the entire array of content.  What I care about is the properties of 
the elements in this array being accessed before the associated row appears 
on-screen.  The image property is calculated on-demand and it is better 
performance and memory usage to NOT pre-calculate every image.

Do I have to hack away or can the collection be convinced to operate in this (I 
think, obvious/superior) "lazy loading" style?

Thanks in advance.

Mark Sanvitale
Real Networks

_______________________________________________

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