title: Can you remove an __attribute__ by redefining a variable or method?
body: <p>I want to create a singleton which disallows these methods in the <code>.h</code> file (more details <a href="https://stackoverflow.com/a/7997698/269753">here</a>):</p>
  
  <pre><code>+ (instancetype) alloc __attribute__((unavailable("alloc not available, call sharedInstance instead")));
  - (instancetype) init __attribute__((unavailable("init not available, call sharedInstance instead")));
  + (instancetype) new __attribute__((unavailable("new not available, call sharedInstance instead")));
  </code></pre>
  
  <p>Can I redefine them in the <code>@interface MyClass ()</code> section of the <code>.m</code> file in order to be able to use init internally?</p>
  
  <hr>
  
  <p>I'm looking for something similar to when you create a <code>readonly</code> property on the header and you redefine it as <code>readwrite</code> on the implementation (but for <code>__attribute__</code>).</p>
  
  <p>Like so:</p>
  
  <pre><code>// MyClass.h
  @interface MyClass
  
  @property (readonly) OtherClass *myThing;
  
  @end
  </code></pre>
  
  <p>and</p>
  
  <pre><code>// MyClass.m
  @interface MyClass ()
  
  @property (readwrite) OtherClass *myThing;
  
  @end
  </code></pre>