On Wed, May 20, 2009 at 8:09 AM, Graham Cox <graham....@bigpond.com> wrote: > I have a base class in a framework, let's call it A. This has a number of > subclasses, B C and D. > > I have some functionality I'd like to add that would apply to all A, B, C > and D. So a category on A would be fine - except that I need some support in > the form of a couple of ivars. The added functionality isn't appropriate to > the framework, so though I have the source for A, adding ivars that have no > place there grieves me. > > It also grieves me that the solution appears to be separate subclasses of B, > C and D to add the functionality which must be duplicated for each class. > > Any solution I've missed?
A good compromise between redundancy and evil can be to put the required functionality into an unrelated class, call it X. Then you subclass B, C, and D in a minimal way, just enough to add an ivar for an instance of X and pass messages through it. Depending on what X implements, this could involve simply providing an accessor for the X, implementing methods in your subclasses that call through to the X, or even implementing forwarding so that all X methods get automatically passed along. (The new -forwardingTargetForSelector: method in Leopard makes this sort of forwarding super easy, although it's poorly documented and largely unknown.) If you want to get into extreme evils-ville, you can dynamically create subclasses of all subclasses of A at runtime. Not recommended, but it could be fun. Mike _______________________________________________ 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