Re: Design Question: Bindings & Custom Views
Re: Design Question: Bindings & Custom Views
- Subject: Re: Design Question: Bindings & Custom Views
- From: email@hidden
- Date: Thu, 28 Aug 2008 13:54:25 +0100
Grahaam Cox wrote on 2008-08-28 13:11:47:
>
> Regarding the above though, if this is similar to your situation -
> what's really wrong with model objects caching a thumbnail? Being a
> slave to MVC is going to lead to suboptimal solutions just as ignoring
> MVC altogether is going to be. The cached thumbnail has to be stored
> somewhere, right? Where, doesn't really matter. So if a model object
> has a -thumbnail method that returns the thumbnail when you need it,
> what's wrong with that? The thumbnail doesn't need to end up
> permanently stored by the model when archived, just created lazily
> when required. If the model object is the best object to make and
> cache that thumbnail (i.e. it has all the state information to hand to
> do so) why not let it? A view that displays the thumbnail can then
> just request it directly from the object in question instead of going
> round the houses to generate a thumbnail simply to avoid the model
> object getting its hands dirty. Some may feel differently but I don't
> see that this violates MVC in any significant way and it's much simpler.
Your model objects could be re-used somewhere that AppKit isn't available
or where it's unnecessary and perhaps even inappropriate to keep NSImages
around; your command-line interface to the model probably won't need them,
for instance. As such, following the Decorator pattern by having an
object which does "appkit-can-draw-this" and has-a model object promotes
re-use of the model. It also keeps all of your AppKit code in the view,
so when you need an
"other-ui-framework-which-I-will-not-specify-can-draw-this" object, you
don't have to go hunting around for all that drawing code.
As others have pointed out if you don't need extra ivars, or don't mind
jumping through a hoop to get them, you can add a category to the model
class which is decorating via ObjC magic. It still lets you separate the
UI code into the view package, but also means you directly use the model
class. An example of that approach is
NSAttributedString(AppKitAdditions).
Cheers,
Graham.
--
Graham Lee
Senior Macintosh Software Engineer, Sophos
Tel: 01235 540266 (Direct)
Web: http://www.sophos.com
Sophos - Security and Control
Sophos Plc, The Pentagon, Abingdon Science Park, Abingdon,
OX14 3YP, United Kingdom.
Company Reg No 2096520. VAT Reg No GB 348 3873 20.
_______________________________________________
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