0

OK、これが私の問題です...

私のマクロ定義

#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]  

今、私がそれらを使用しようとしているとき ( ARC を使用していなかったときとまったく同じ)、このように、警告が表示され続けます:

// 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)];
}

何が起こっているのですか?これらすべての (実際には無害な) 警告/エラーをどのように排除できますか?


ヒント :

  • ARCに変換した後も、いくつかの警告/エラーが表示され続けますが、すべてが機能していたことに注意してください。
  • Xcode 4.5.1、Mac OS X 10.7.5 (Lion) を実行しており、LLVM 4.1 でコンパイルしています。
4

1 に答える 1

3

DRK_INIT の定義では引数が必要ですが、引数を指定していないことに注意してください。

「;」もあります メソッド定義の外で終了する DRK_INIT() 呼び出しの最後。

何が起こっているのかを推測しようとしないでください

実際に生成しているものを確認するには、XCode の Preprocess オプションを使用します。

于 2013-02-20T23:26:20.180 に答える