title: What's wrong with this observeValueForKeyPath:ofObject:change:context: implementation?
body: <p>In my UIScrollView subclass, I'm observing frame changes:</p>
  
  <pre><code>[self addObserver:self forKeyPath:@"frame" options:0 context:NULL];
  </code></pre>
  
  <p>My <code>observeValueForKeyPath:ofObject:change:context:</code> implementation is as follows:</p>
  
  <pre><code>- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
      if (object == self &amp;&amp; [keyPath isEqualToString:@"frame"]) {
          [self adjustSizeAndScale];
      }
      if ([UIScrollView instancesRespondToSelector:@selector(observeValueForKeyPath:ofObject:change:context:)]) {
          [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; // Exception
      }
  }
  </code></pre>
  
  <p>But I get exception with this code:</p>
  
  <pre><code>*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '&lt;WLImageScrollView: 0x733a440; baseClass = UIScrollView; frame = (0 0; 320 416); clipsToBounds = YES; layer = &lt;CALayer: 0x7346500&gt;; contentOffset: {0, 0}&gt;: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
  Key path: frame
  Observed object: &lt;WLImageScrollView: 0x733a440; baseClass = UIScrollView; frame = (0 0; 320 416); clipsToBounds = YES; layer = &lt;CALayer: 0x7346500&gt;; contentOffset: {0, 0}&gt;
  Change: {
      kind = 1;
  }
  Context: 0x0'
  </code></pre>
  
  <p>Does it mean UIScrollView implements <code>observeValueForKeyPath:ofObject:change:context:</code> but throws the above exception?</p>
  
  <p>If so, how can I properly implement <code>observeValueForKeyPath:ofObject:change:context:</code> so that I can both handle my interested changes and give superclass a chance to handle its interested changes?</p>