私はランダムな整数の平均絶対偏差を計算するツール(ちょうど学習プロジェクトとして)を完成させました。Cocoa/Obj-Cプロジェクトで外部関数を宣言する
"findMeanAbsoluteDeviation()"という関数に計算を移動しました。NSMumberArrayのNSNumberオブジェクトを受け取り、計算を実行します。いずれかの方法。だから私は他のコードと同じ ".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...
}
、それが正常に動作します。今、私は外部ファイルに関数を移動したいと思います。 "mad"という名前のNSObjectのサブクラス を作成しました。私は怒っ「mad.m」に関数を移動し、私は読んで、その後
-(float)findMeanAbsoluteDeviation:(NSMutableArray *)array {
...code...
}
のように、私の「mad.h」ファイルに見えるように宣言を再フォーマットされました。
@interface mad : NSObject {
}
- (float)findMeanAbsoluteDeviation:(NSMutableArray *)array;
@end
すべてが素晴らしいようです。右?私がしなければならないすべては私の「main.m」ファイルの先頭に...
#import "mad.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
のための任意のアイデアを省略していますか?ご協力いただきありがとうございます!
はい、メソッドや関数が特定のクラスのオブジェクトを受け取った場合、サブクラスのオブジェクトも取得できます。変更可能なオブジェクト(配列、辞書など)を不変のものからその逆にする必要がある場合、使用するメソッドは "-copy"(mutable => immutable)と "-mutableCopy"(不変=>変更可能)。 –