title: @property for delegate?
body: <p>A quick question if I may, can anyone explain what I am missing below, I was assuming the 3rd one with the  would work? </p>
  
  <pre><code>@interface ...
  // These work
  @property(assign) SomeClass *someDelegate;
  
  @property(assign) id someDelegate;
  
  // This gives warning
  @property(assign) id  &lt;SomeClassDelegate&gt; someDelegate;
  </code></pre>
  
  <p>.</p>
  
  <pre><code>@implementation ...
  @synthesize someDelegate;
  
  [self setSomeDelegate:[[SomeClass alloc] init]];
  [someDelegate setDelegate:self];
  </code></pre>
  
  <p>.</p>
  
  <pre><code>warning: method '-setDelegate:' not found (return type defaults to 'id')
  </code></pre>
  
  <h1>EDIT_001:</h1>
  
  <pre><code>// SomeClass.h
  
  #import &lt;Foundation/Foundation.h&gt;
  
  @class SomeClass;
  
  @protocol SomeClassDelegate &lt;NSObject&gt;
  @optional
  -(void)didHappen:(SomeClass *)someClass;
  @required
  -(void)willUse:(SomeClass *)someClass withThis:(BOOL)flag;
  @end
  
  @interface SomeClass : NSObject {
      id &lt;SomeClassDelegate&gt; delegate;
  }
  @property(assign) id &lt;SomeClassDelegate&gt; delegate;
  -(void)otherActions;
  @end
  </code></pre>
  
  <p>cheers Gary.</p>