2011-11-20 55 views
1

我有2個方法,這些方法給我一個警告:目標C - 以前沒有原型功能

id LoadObjectFromFile(NSString* filename) { 
    if ((filename = DocumentPath(filename, NO))) { 
     return [NSKeyedUnarchiver unarchiveObjectWithFile: filename]; 
    } else { 
     return nil; 
    } 
} 

BOOL saveObjectWithFile(NSString* filename, id object) { 
    if ((filename = DocumentPath(filename, YES))) { 
     return [NSKeyedArchiver archiveRootObject: object toFile: filename]; 
    } else { 
     return NO; 
    } 
} 

這是給我一個「沒有以前的原型功能」的警告。

我寧願不只是禁用xcode中的警告。

我哪裏錯了?

+1

你想寫功能,或方法?這些是不同的東西在objective-c – jrturton

+0

這個警告是可怕的無用的。我總是關掉它。 – 2011-11-20 16:47:11

+0

@WTP:這不是沒用的。在聲明它之前使用函數會使您處於隱式類型不匹配的風險中。例如,聲明之前的任何用法都會假定它返回'int',所以如果函數返回'float',則會得到垃圾結果(因爲實際返回值位於不同的地方)。這就是爲什麼你必須在使用它們之前聲明你的功能,因爲警告提醒你。 –

回答

5

這是C函數不客觀的C方法。你有沒有在.h文件中定義它們?

+0

Derp,我是一個白癡。謝謝= D – John

+0

不要擔心這種錯誤是最難以發現的;) –