Re: With What does Apple Swizzle the IsA-pointer in KVO?
Re: With What does Apple Swizzle the IsA-pointer in KVO?
- Subject: Re: With What does Apple Swizzle the IsA-pointer in KVO?
- From: "Clark Cox" <email@hidden>
- Date: Fri, 23 Nov 2007 09:05:24 -0800
On Nov 23, 2007 8:03 AM, Philip Mötteli <email@hidden> wrote:
> Am 23.11.2007 um 15:54 schrieb Clark Cox:
>
> > On Nov 23, 2007 5:42 AM, Philip Mötteli <email@hidden>
> > wrote:
> >>
> >>
> >> Apple says, that it uses IsA-swizzling as the underlying technology
> >> to
> >> implement KVO.
> >> What are/is the class(es), which replace the original class of the
> >> observed object? Is it an NSProxy subclass? Different NSProxy
> >> subclasses, depending on the observed object? Is it a direct subclass
> >> of the observed object?
>
>
> > Perhaps I could provide more help if you
> > stated why it is that you think that you need to know this.
>
> I need to know, when an object has changed and I would prefer to reuse
> as much as possible, of what KVO already offers.
> Unfortunately, KVO is based on the internals of an object (which
> should be assumed as being hidden in OOP).
KVC (and by extension, KVO) only uses instance variable directly if:
1) There is no appropriate accessor method
2) +accessInstanceVariablesDirectly is not implemented to return NO
> So if I want to observe an object that either doesn't have any declared IVar, like e. g. NSString
> and many others, or does not have a corresponding IVar, because it is
> not a simple setter method, like -finalize or -dealloc,
I'm still not clear as to what you're trying to do. NSString is not
mutable, so attempting to observe one of it's properties doesn't make
sense, and finalize and dealloc are just methods, what would observing
them even mean?
> I have a problem.
> Ideally, I just want to implement a plug-in, that reuses the
> functionality, offered by KVO, but extends it, so that the publicly
> accessible part of an object can be observed instead of the hidden
> internals.
The publicly accessible parts of objects *are* what is observed.
> I presume, I can do that, by implementing my own proxy, that prevents
> KVO to do an IsA swizzling, by implementing -
> automaticallyNotifiesObserversForKey:. But I would have liked to reuse
> the method forwarding mechanism of KVO.
--
Clark S. Cox III
email@hidden
_______________________________________________
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