我正在創建一個小程序,它包含我從桌面上運行的幾個源文件(我不使用Xcode),它是從命令行編譯的。由於一切都非常小,我想跳過使用頭文件,並在我的.m文件中的一切。它想是這樣的:Objective-C中不使用頭文件
Foo.m
#import <Foundation/Foundation.h>
@interface FooClass : NSObject {
}
- (void) fooFunction;
@end
@implementation FooClass
- (void) fooFunction {
NSLog(@"Printing bar");
}
@end
Main.m
#include <stdlib.h>
#import "FooFunction.m"
int main (int argc, const char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Running....");
FooFunction *foo = [[FooFunction alloc] init];
[foo fooFunction];
[pool drain];
return 0;
}
當我嘗試編譯此我得到ld duplicate symbol fooFunction blahblahblah for architecture x86_64
的任何想法,我做錯了什麼?
那麼解決方案是將接口代碼放在Main.m文件中?我很感謝你的解釋,但我仍然不清楚如何避免使用頭文件。 – 2012-02-11 09:58:12
你可以這樣做 - 我更新了我的答案來討論這個問題。 – 2012-02-11 10:01:37
@Eric:避免頭文件意味着只有一個名爲main.m的文件。但是,如果您不包含任何頭文件,那麼您將無法使用任何庫/ API或組織代碼。如果你有多個源文件,你應該使用頭文件。如果你有一個main.m,那就完全沒有必要。 – 2012-02-11 10:08:50