title: Use @dynamic to acknowledge intention
body: <p>I was under the impression that this was the correct pattern for declaring a <code>readonly</code> property in a base class and make it <code>readwrite</code> in a child class. I think I've even done something similiar before, so I'm probably missing something.</p>
  
  <pre><code>// Signal.h
  @interface Signal : NSObject
  @property (readonly) NSUInteger version;
  @end
  
  @interface MutableSignal : Signal
  @property (readwrite) NSUInteger version;
  @end
  </code></pre>
  
  <p>And my .m file:</p>
  
  <pre><code>// Signal.m
  @interface Signal () {
  
      @protected
      NSUInteger _version;
  }
  @end
  
  @implementation Signal
  
  @synthesize version = _version;
  
  - (NSUInteger)version
  {
      @synchronized (self) {
          return _version;
      }
  }
  
  @end
  
  @implementation MutableSignal
  
  - (void)setVersion:(NSUInteger)version
  {
      @synchronized (self) {
          _version = version;
      }
  }
  
  @end
  </code></pre>
  
  <p>I get the following warning on the <code>readwrite</code> declaration, under <code>MutableSignal</code>:</p>
  
  <blockquote>
    <p>Auto property synthesis will not synthesize property 'version'; it will be implemented by its superclass, use @dynamic to acknowledge intention</p>
  </blockquote>
  
  <p>I tried adding <code>@dynamic</code> in the implementation, but it didn't help.</p>