Я создаю небольшую программу, которая состоит из нескольких исходных файлов на моем рабочем столе (я не использую 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? Я ценю ваше объяснение, но я все еще не понимаю, как избежать использования файлов заголовков. –
Вы могли бы это сделать - я обновил свой ответ, чтобы обсудить это. –
@ Эрик. Избегание файлов заголовков означает наличие только одного файла с именем main.m. Однако, если вы не включаете заголовочные файлы, вы не сможете использовать какие-либо библиотеки/API или организовать свой код. Если у вас несколько исходных файлов, вы должны использовать заголовочные файлы. Если у вас есть один main.m, и все, то вам это не нужно. –