Objective-C中的类别问题

Objective-C中的类别问题,objective-c,compiler-errors,categories,Objective C,Compiler Errors,Categories,我正在做一些练习,但不明白怎么了 我有: 分数+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

我正在做一些练习,但不明白怎么了

我有:

分数+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中的categories调用add方法

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];
并且有编译器错误(没有可见的@interface for'Fraction'声明选择器'add:'
)at cresult=[ca添加:cb]字符串。

问题已解决: 我没有在main.m中包含分数+MathOps.h
谢谢Richard和Carl Norum今天我偶然发现了这个问题,使用的是Xcode 7.3。使用上面的示例,从Fraction+MathOps.m中删除第一行会使Xcode理解额外的(类别)选择器,而不会抛出错误

从Fraction+MathOps.h中删除#import行后,我将其放回原处。没有问题了


如果您看到此消息,一些创造性的文本编辑可能会导致Xcode为您解决问题。

您是否从main.m中包含
ing“france+MathOps.h”?您是否在
main.m
中导入
#france+MathOps.h”
?哦,没有。谢谢大家,包括这些之后一切都很好,谢谢!但奇怪的是,我认为分数类知道自己的类别。@Ju-v:代码在没有头文件的情况下可以工作,但编译器会抱怨,因为除非它也处理头文件,否则它无法知道代码是否工作。