• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: With What does Apple Swizzle the IsA-pointer in KVO?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: With What does Apple Swizzle the IsA-pointer in KVO?


  • Subject: Re: With What does Apple Swizzle the IsA-pointer in KVO?
  • From: Sherm Pendley <email@hidden>
  • Date: Fri, 23 Nov 2007 13:09:53 -0500

On Nov 23, 2007, at 11:50 AM, Paul Sargent wrote:

KVO is not based on the internals of an object (which is assumed to be hidden), and it does not access hiddden internals. KVO is based on KVC and uses accessors.

To expand a bit, my mental model of it is (and this could be wrong):

No Observing:

ObjA ----setBlah:----> ObjB

Observing:

ObjA ----setBlah:----> ProxyForB -----setBlah:----> ObjB
                           |
                           |
                           \-------blahChanged:---> Observer

i.e. When the observer registers a proxy is inserted in the chain. The message is intercepted by the proxy and it notifies the Observer.

Isa-swizzling does not involve a proxy object - it changes the class of ObjB directly by manipulating its isa ivar, hence the name.


When you observe an object, a new subclass is created that inherits from that object's class, and overrides its KVC methods with versions that send -willChangeValueForKey: and -didChangeValueForKey: to any observers before and after calling the original class' KVC methods. The observed object's class is then changed by storing a pointer to the subclass in its isa ivar.

sherm--

Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net


_______________________________________________

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


  • Follow-Ups:
    • Re: With What does Apple Swizzle the IsA-pointer in KVO?
      • From: Philip Mötteli <email@hidden>
References: 
 >With What does Apple Swizzle the IsA-pointer in KVO? (From: Philip Mötteli <email@hidden>)
 >Re: With What does Apple Swizzle the IsA-pointer in KVO? (From: "Clark Cox" <email@hidden>)
 >Re: With What does Apple Swizzle the IsA-pointer in KVO? (From: Philip Mötteli <email@hidden>)
 >Re: With What does Apple Swizzle the IsA-pointer in KVO? (From: Jean-Daniel Dupas <email@hidden>)
 >Re: With What does Apple Swizzle the IsA-pointer in KVO? (From: Paul Sargent <email@hidden>)

  • Prev by Date: Re: With What does Apple Swizzle the IsA-pointer in KVO?
  • Next by Date: Re: With What does Apple Swizzle the IsA-pointer in KVO?
  • Previous by thread: Re: With What does Apple Swizzle the IsA-pointer in KVO?
  • Next by thread: Re: With What does Apple Swizzle the IsA-pointer in KVO?
  • Index(es):
    • Date
    • Thread