В книге, которую я читаю, он объясняет, как создавать категории в основном файле, но я пытаюсь выяснить, как это сделать в отдельных файлах.Как создать категории в отдельных файлах .h и .m?
Я хочу создать для класса фракций, называемого «MathOperations», поэтому я открыл новые .h и .m, называемые Fraction + MathOperations, так как я знаю, что это соглашение.
Это Fraction.h
#import "Fraction.h"
@interface Fraction : NSObject
@property int numerator, denumerator;
-(void) print: (BOOL) test;
-(void) setTo: (int) n over: (int) d;
-(void) reduce;
-(double) convertToNum;
-(id) addFrac:(id)f;
-(void) justPrint;
-(id) initWith:(int)n over:(int)f;
+(Fraction *) allocF;
+(int) count;
+(int) gCounter;
@end
Фракция + MathOperations.h
#import "Fraction.h"
@interface Fraction (MathOperations)
-(Fraction *) add: (Fraction *) f;
-(Fraction *) substract: (Fraction *) f;
-(Fraction *) multiply: (Fraction *) f;
-(Fraction *) divide: (Fraction *) f;
@end
Фракция + MathOperations.m
#import "Fraction.h"
@implementation Fraction (MathOperations)
-(Fraction *)add:(Fraction *)f
{
extern int gCounter;
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.denumerator + denumerator * f.numerator;
result.denumerator = denumerator * f.denumerator;
[result reduce];
++gCounter;
return result;
}
-(Fraction *)substract:(Fraction *)f
{
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.denumerator - denumerator * f.numerator;
result.denumerator = denumerator * f.denumerator;
//[result reduce];
return result;
}
-(Fraction *)multiply:(Fraction *)f
{
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.numerator;
result.denumerator = denumerator * f.denumerator;
//[result reduce];
return result;
}
-(Fraction *)divide:(Fraction *)f
{
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.denumerator;
result.denumerator = denumerator * f.numerator;
//[result reduce];
return result;
}
@end
Очевидно, я объявляю что-то неправильно причина им получить куча ошибок, которые переменные не объявлены. Кроме того, разумнее ли объявлять новый интерфейс и реализация в исходном классе фракций?
ошибки:
В классе Фракцию у меня есть некоторое свойство, называемое «числитель» и «знаменатель», они, похоже, не будет объявлять в файле реализации мет TNX
Общая идея кажется правильной, пожалуйста, добавить к вопросу, какие точные ошибки, для которых переменных вы получаете? – coverback
Ваш код выглядит нормально, поэтому, пожалуйста, разместите код, который включает эти файлы и использует их. – trojanfoe
Можете ли вы рассказать об ошибках? Какие из них не объявлены? Как они используются в этой категории? – WDUK