title: passing object pointer as protocol pointer
body: <pre><code>@protocol protoA &lt;NSObject&gt;
  @end
  
  @interface objA : NSObject&lt;protoA&gt; {
      @private
      }
  @end
  
  @implementation objA
  @end
  
  @protocol protoB &lt;NSObject&gt;
      -(void) foo: (id &lt;protoA&gt; *) par;
  @end
  
  @interface objB : NSObject&lt;protoB&gt; 
      -(void) foo: (id &lt;protoA&gt; *) par;
  @end
  
  @implementation objB
      -(void) foo: (id &lt;protoA&gt; *) par
      {
      //...
      }
  @end
  </code></pre>
  
  <p>in some other class method i use it this way:</p>
  
  <pre><code>objB *obj1 = [[objB alloc] init];
  objA *obj2 = [[objA alloc] init];
  
  [obj1 foo: obj2];
  </code></pre>
  
  <p>I have compiler error: "Implicit conversion of an Objective-C pointer to '__autoreleasing id*' is disallowed with ARC </p>
  
  <p>What is the proper way to do get this functionality ?</p>