title: Objective-C implicit conversion of obj-c pointer to autoreleasing id<protocol> error
body: <p>I'm having a very specific problem, I'm working with a DAO (data access object) that takes varius states, these states are passed into an init method and are then used.</p>
  
  <p>Now the problem that I'm having is that I can't seem to pass a concrete state into the <code>init</code> method, I always get an </p>
  
  <blockquote>
    <p>implicit conversion of an objective-c pointer to __autoreleasing id is disallowed with ARC</p>
  </blockquote>
  
  <p>The code:</p>
  
  <pre><code>-(DAOObject *)makeSpecificDataAccessObject{
      SQLiteState* localstate = [[SQLiteState alloc] initWithTableName:@"TableName"];
      DAOObject* specificDAO = [[DAOObject alloc] initWithLocalState:localstate]; //where error happens
      return specificDAO;
  }
  
  @interface DAOObject : NSObject &lt;SettingsListenerProtocol&gt;
      -(id)initWithLocalState:(id&lt;StateProtocol&gt; *)LocalState;
  @end
  
  @interface SQLiteState : NSObject &lt;StateProtocol&gt;
  -(id)initWithTableName:(NSString *)tableName;
  
  @end
  </code></pre>