On Sep 5, 2012, at 5:39 AM, Jerry Krinock <je...@ieee.org> wrote:

> What is the best the data source for a table view in a document window?  The 
> candidates areā€¦
> 
> (1)  Category of the document.  This is the way it is done in the 
> WithoutBindings ("With and Without Bindings") Apple sample code.  But it 
> seems like too much "view-ish" code in the data model, particularly when my 
> document class is also used in a GUI-less command-line tool, which has no 
> need for this code.

NSDocument is really a controller. But if you already have a window controller 
subclass, then putting UI things in the document is kind of unnecessary.

> 
> (2)  Separate, standalone object.  Fancy housekeeping is needed to avoid 
> retain cycles, and crashes in corner cases as the document window is closing.

Quite common. This kind of life cycle management is part of living with Cocoa.

Consider making this object an NSViewController subclass.

> 
> (3)  Category of the window controller.  Probably not a bad choice, except 
> that my window controller for this multi-tabbed window is already huge.

I start here and then move to #2 if the window controller gets too big.

> 
> (4)  Category of the table view itself, assuming that it is subclassed.  
> Seems like a logical division.  No worrying about whether table view or its 
> data source gets deallocced first.  Access the document via [[[self window] 
> windowController] document].

Absolutely, completely, 100% not. Never ever do this. If NSTableView privately 
implements any methods that it also expects the data source to implement, you 
will get bad behavior. This happened to someone using UITableView on this list 
a few years ago. Plus using window] windowController] document] is a terrible 
design.

--Kyle Sluder
_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to