title: Weird issue with Macros and ARC
body: <p>OK, so here's my issue...</p>
  
  <p><strong>My Macro definitions</strong></p>
  
  <pre><code>#define DRK_INIT(X) -(id)init \
  { \
  self = [super init]; \
  if (self) { \
  X \
  } \
  return self; \
  }
  
  #define DRK_DEALLOC(X) -(void)dealloc \
  { \
  X \
  [super dealloc]; \
  }
  
  #define DRK_DICFROMFILE(X)          [NSDictionary dictionaryWithContentsOfFile:(X)]
  #define DRK_MUTDICFROMFILE(X)       [NSMutableDictionary dictionaryWithContentsOfFile:(X)]
  #define DRK_ARRFROMFILE(X)          [NSArray arrayWithContentsOfFile:(X)]
  #define DRK_MUTARRFROMFILE(X)       [NSMutableArray arrayWithContentsOfFile:(X)]
  #define DRK_STRFROMFILE(X)          [NSString stringWithContentsOfFile:(X) encoding:NSUTF8StringEncoding error:nil]
  
  #define DRK_WRITESTRTOFILE(X,Y)     [(X) writeToFile:(Y) atomically:YES encoding:NSUTF8StringEncoding error:nil]
  #define DRK_WRITEDICTOFILE(X,Y)     [(X) writeToFile:(Y) atomically:YES]
  #define DRK_WRITEARRTOFILE(X,Y)     [(X) writeToFile:(Y) atomically:YES]  
  </code></pre>
  
  <p>Now, when I'm trying to use them (exactly as when I was <em>not</em> using ARC), like this, I keep getting warnings :</p>
  
  <pre><code>// Type specifier missing, defaults to 'int'
  DRK_INIT();
  
  - (void)someFunction:(NSString*)str
  {
      // Implicit conversion of 'int' to 'NSString *' is disallowed with ARC
      [self setContent:DRK_STRFROMFILE(str)];
  }
  </code></pre>
  
  <p>Any ideas what is going on? How could eliminate all these - actually harmless - warnings/errors?</p>
  
  <hr>
  
  <p><strong>HINTS :</strong></p>
  
  <ul>
  <li>Please note that the whole thing was and is still working, though after converting to ARC, it keeps showing several warnings/errors.</li>
  <li>I'm running Xcode 4.5.1, Mac OS X 10.7.5 (Lion) and compiling with LLVM 4.1</li>
  </ul>