title: ARC [rewriter] NSInvocation's setArgument is not safe to be used with an object with ownership other than __unsafe_unretained
body: <p>I been to convert my project to ARC and i m stuck with this error.</p>
  
  <p>&amp;object,&amp;invocation and &amp;callerToRetain is showing me error of "[rewriter] NSInvocation's setArgument is not safe to be used with an object with ownership other than __unsafe_unretained"</p>
  
  <pre><code>+ (void)performSelector:(SEL)selector onTarget:(id *)target withObject:(id)object amount:(void *)amount callerToRetain:(id)callerToRetain{if ([*target respondsToSelector:selector]) {
      NSMethodSignature *signature = nil;
      signature = [*target methodSignatureForSelector:selector];
      NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
  
      [invocation setSelector:selector];
  
      int argumentNumber = 2;
  
      // If we got an object parameter, we pass a pointer to the object pointer
      if (object) {
          [invocation setArgument:&amp;object atIndex:argumentNumber];
          argumentNumber++;
      }
  
      // For the amount we'll just pass the pointer directly so NSInvocation will call the method using the number itself rather than a pointer to it
      if (amount) {
          [invocation setArgument:amount atIndex:argumentNumber];
      }
  
      SEL callback = @selector(performInvocation:onTarget:releasingObject:);
      NSMethodSignature *cbSignature = [ASIHTTPRequest methodSignatureForSelector:callback];
      NSInvocation *cbInvocation = [NSInvocation invocationWithMethodSignature:cbSignature];
      [cbInvocation setSelector:callback];
      [cbInvocation setTarget:self];
      [cbInvocation setArgument:&amp;invocation atIndex:2];
      [cbInvocation setArgument:&amp;target atIndex:3];
      if (callerToRetain) {
          [cbInvocation setArgument:&amp;callerToRetain atIndex:4];
      }
  
      CFRetain(invocation);
  
      // Used to pass in a request that we must retain until after the call
      // We're using CFRetain rather than [callerToRetain retain] so things to avoid earthquakes when using garbage collection
      if (callerToRetain) {
          CFRetain(callerToRetain);
      }
      [cbInvocation performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:[NSThread isMainThread]];
  }}
  </code></pre>
  
  <p>Please help me out.</p>