好了,這裏是我的問題......奇怪的問題與宏和ARC
我的宏定義
#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(獅子),並與LLVM 4.1
好奇你爲什麼以這種方式使用宏... – nielsbot 2013-02-20 11:50:24
調用' - [super dealloc]'不允許使用ARC – nielsbot 2013-02-20 11:53:11
無論如何,我不會像上面那樣使用你的DRK_INIT()檢查你的源之前,該點出錯... – nielsbot 2013-02-20 11:53:58