On Tue, Sep 30, 2008 at 8:19 PM, Jonathan del Strother <[EMAIL PROTECTED]> wrote: > Heya > I'm struggling a bit with NSViewControllers. My app displays a list > of widgets. I have a Widget model, a WidgetView view (an NSView > subclass), and a WidgetViewController (an NSViewController subclass). > All of those have a one-to-one mapping - for any given > WidgetViewController, it has a representedObject pointing to the > Widget, and a view pointing to the WidgetView. The user can > add/remove/reorder the widgets at any time. > > So, there's an array of Widgets, which the window controller observes, > and whenever that array changes, it creates/deletes > WidgetViewControllers (and inserts WidgetView subviews) to match. So > far so good. > > (In fact, if I give the Widget model a strong relationship to the > WidgetViewController (ie the Widget retains its view controller), it > works perfectly. Unfortunately, that totally ignores the nice fluffy > ideal of MVC separation.) > > There's a design flaw here somewhere, but I can't quite figure out > what it is. It's highlighted by trying to reorder widgets. With KVC > to-many relationships, there's no atomic way of moving an object from > one position in an array to another : you remove the object, then > re-insert it at the new location. But when the object is > (temporarily) removed from the array, the window controller gets an > observeValueForKeyPath saying it's been deleted, and so releases the > corresponding WidgetViewController, the view gets deallocated, and so > on. I'll then get a second observeValueForKeyPath saying that an > object has been inserted, recreate the WidgetViewController, re-insert > the view, etc etc. > > This seems pretty wrong to me. I can see a few workarounds (perhaps > storing the kvo notifications until the end of the current runloop so > I can add them together and figure out what was really a deletion and > what was just a reordering), but they all seem pretty ugly and > heavyweight. > > How is this usually handled? How do you managed your view controller > lifetimes w.r.t. the model lifetime? > > Thanks for reading this far, any suggestions would be greatly appreciated > -Jonathan >
No takers, then? Anything I could clarify? _______________________________________________ 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 [EMAIL PROTECTED]