- (id) valueForKey: (NSString *) {
const char *types = [[NSString stringWithFormat: @"%s%s%s%s", , @encode(id), @encode(id), @encode(SEL), @encode(id)] UTF8String]; if ([self class] == [MyClass class]) { IMP function = class_getMethodImplementation([NSObject class], @selector( valueForKey:)); class_replaceMethod([self class], _cmd, function, types); } else { IMP function = class_getMethodImplementation([OtherClass class], @selector(valueForKey:)); class_replaceMethod([self class], _cmd, function, types); } return [self valueForKey: key]; } On Sun, Nov 25, 2012 at 6:36 AM, Roland King <r...@rols.org> wrote: > > On 24 Nov, 2012, at 10:23 PM, jonat...@mugginsoft.com wrote: > > > > > > > On 24 Nov 2012, at 09:55, Roland King <r...@rols.org> wrote: > > > >> I have a fairly well-used and oft-subclassed class which overrides > valueForKey: and setValue:ForKey: to behave like the NSDictionary versions, > because this class looks much like an NSDictionary. I have a subclass of > that which wants to do 'normal' KVO, and so I need valueForKey: and > setValueForKey: to return to the default NSObject version. > >> > >> I could use composition but that's a lot of boilerplate to re-expose > the properties of the composed class and I really did want it to be a > subclass. I could code up a custom valueForKey: which does the right thing, > but that's fragile if I add more properties or subclass again. So I want to > actually make the implementation of those two methods in my subclass use > the NSObject implementation. > >> > >> > > > > Would something like the following be worth considering: > > > > Class A uses custom valueForKey. > > SubClass A1 needs the super implementation. > > > > A: > > > > + (BOOL)useCustomKVO > > { > > return YES; > > } > > > > That's what I started with and thought, there must be a better way, but > there isn't a better way I can find that doesn't involve what's basically > swizzling so .. I'm going to go back to that simple, direct, > easy-to-understand-and-document version. > > Thanks for all the on and off list replies. > > _______________________________________________ > > 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/arielfapple%40gmail.com > > This email sent to arielfap...@gmail.com > -- best regards Ariel _______________________________________________ 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