title: Internal calls on my proxied class don't get routed through proxy
body: <p>I was using method swizzling to wrap all method invocations in a class with some extra functionality. Specifically I was:</p>
  
  <ul>
  <li>Checking if the required object for this method call was in the cache</li>
  <li>If the cache had that object return it.</li>
  <li>If not, dispatch to the original implementation, populate the cache and return that.</li>
  </ul>
  
  <p>I wanted to see if using NSProxy gave more readable code, plus thought NSProxy might make it easy to redirect method calls with an unknown number of arguments. </p>
  
  <p>So, the NSProxy version works fine except for one important catch. Any internal calls on my sub-class don't go via the proxy. </p>
  
  <p><strong>Here's how I create the stand-in interceptor:</strong></p>
  
  <pre><code>- (id)init
  {
      self = [super init];
      if (self)
      {
          TyphoonAssemblyProxy* proxy = [[TyphoonAssemblyProxy alloc] initWithAssembly:self];
          self = proxy; // 'self' should now be the proxy. . . but it seems not :(
      }
      return self;
  }
  </code></pre>
  
  <p><strong>Internal calls (ie calls to 'self' within the proxied class) don't get routed through proxy:</strong></p>
  
  <p>Now, in a sub-class of my proxied class, I have code want internal calls to go via the proxy. But they don't. </p>
  
  <pre><code>- (id)knight
  {
      return [TyphoonDefinition withClass:[Knight class] properties:^(TyphoonDefinition* definition)
      {
          //THIS NEXT CALL TO [self defaultQuest] SHOULD GO THROUGH PROXY MACHINERY!
          [definition injectProperty:@selector(quest) withDefinition:[self defaultQuest]]; 
          [definition injectProperty:@selector(damselsRescued) withValueAsText:@"12"];
          [definition setScope:TyphoonScopeDefault];
      }];
  }
  </code></pre>
  
  <p><strong>Question:</strong></p>
  
  <p>What is an easy way to get these internal goes to go via the proxy?</p>