2012-03-14 9 views
1

いくつかの演習を行っていますが、何が間違っているのか理解できません。Objective-Cのカテゴリに関する問題

私が持っている:ここでは

画+ MathOps.h

#import "Fraction.h" 

@interface Fraction (MathOps) 
-(Fraction *) add:(Fraction *) f; 
@end 

は分数+ MathOps.m

#import "Fraction+MathOps.h" 

@implementation Fraction (MathOps) 

-(Fraction *) add:(Fraction *) f 
{ 
    //To add two fraction 
    // a/b + c/d = ((a * b) + (b * c))/(b * d) 

    Fraction *result = [[Fraction alloc] init]; 

    result.numerator = (self.numerator * f.denominator) + (self.denominator * f.numerator); 
    result.denominator = self.denominator * f.numerator; 

    [result reduce]; 

    return result; 
} 

@end 

で、メソッドを呼び出すようにしようとしますがmain.mのカテゴリから追加します

Fraction *ca = [[Fraction alloc] init]; 
Fraction *cb = [[Fraction alloc] init]; 
Fraction *cresult; 

[ca setTo: 1 over: 3]; 
[cb setTo: 2 over: 5]; 

cresult = [ca add: cb]; 

dはコンパイラエラー( 'Fraction'の表示されない@interfaceはセレクタ 'add:' )をcresult = [ca add:cb]文字列で宣言します。

+2

main.mから​​ "Fraction + MathOps.h"をインクルードしていますか? – Richard

+0

'mainim'に' #import "Fraction + MathOps.h" 'がありますか? –

+0

よろしくお願いします。おかげで、すべての作品が良いことを含めた後、ありがとう!しかし、私はFractionクラスがそれ自身のカテゴリについて知っていると思ったのは奇妙です。 –

答えて

2

問題は解決: 私はちょうどXcodeの7.3で、今日この問題に出くわし

0

main.m おかげでリチャードとカールNorumで分数+ MathOps.hが含まれていませんでした。上記の例を使用すると、Fraction + MathOps.mから最初の行を削除すると、Xcodeはエラーをスローせずに追加の(カテゴリ)セレクタを認識しました。

Fraction + MathOps.hから#import行を削除した後、元に戻します。これ以上の問題はありません。

このメッセージが表示された場合は、少し創造的なテキスト編集によって問題が解決される場合があります。