好的,这里有。我已经完成了一个Cocoa基础工具,它可以计算随机整数的平均绝对偏差(就像学习项目一样)。
我已将计算移动到名为“findMeanAbsoluteDeviation()”的函数中。它接受NSNumber对象的NSMutableArray来执行计算。无论如何。因此,当我在与其他代码相同的“.m”文件中声明它时,这一切都很好用。
#import <Foundation/Foundation.h>
float findMeanAbsoluteDeviation(NSMutableArray * array);
int main (int argc, const char * argv[]) {
...generate random integers, execute function...
meanAbsoluteDeviation = findMeanAbsoluteDeviation(numArray);
}
float findMeanAbsoluteDeviation(NSMutableArray * array) {
...mean absolute deviation maths...
}
它工作正常。现在,我想将该函数移动到外部文件。我创造了一个 NSObject的子类名为“mad”。我把这个函数移到我疯狂的“mad.m”中,我读了然后重新格式化了声明,看起来像
-(float)findMeanAbsoluteDeviation:(NSMutableArray *)array {
...code...
}
和我的“mad.h”文件。
@interface mad : NSObject {
}
- (float)findMeanAbsoluteDeviation:(NSMutableArray *)array;
@end
似乎都很棒。对?我所要做的就是添加......
#import "mad.m"
到我的“main.m”文件的顶部,并像平常一样使用该函数。好吧,它似乎没有正确编译。
ld: duplicate symbol .objc_class_name_mad in ------standardDeviation.build/Debug/standardDeviation.build/Objects-normal/i386/mad.o and ------standardDeviation.build/Debug/standardDeviation.build/Objects-normal/i386/standardDeviation.o
“------”为了长度而省略
Command /Developer/usr/bin/gcc-4.0 failed with error code 1
有什么想法吗?谢谢你的帮助!
答案 0 :(得分:3)
您需要#import "mad.h"
,而不是#import "mad.m"
,否则会对类实现进行两次评估,因此您会看到错误。
一些风格点:
NSGeometry.h
。例如:
@interface MEMeanAbsoluteDeviation : NSObject {
}
+ (float)meanAbsoluteDeviation:(NSArray *)array;
或简单地说:
float MEMeanAbsoluteDeviation(NSArray *array);