The NSProxy Class Reference says this:
Typically, a message to a proxy is forwarded to the real object or causes the proxy to load (or transform itself into) the real object.
How exactly would the "transform itself into the real object" work?
To make things a little more specific, suppose class Foo has a method newFooWithString: that takes a string and returns a new instance of Foo. Would it be possible to setup an NSProxy that sits around, and if a pleaseBecomeAFooUsingString: @"bar" message is received, transforms itself into [Foo newFooWithString: @"bar"], occupying the same memory, without messing with other references to itself that may exist?