我需要通过添加符合NSComparisonMethods协议的几个方法来扩展Fraction类。将方法添加到符合NSComparisonMethods协议的类时出错
这是我的代码: Fraction.h
#import <Foundation/Foundation.h>
@protocol NSComparisonMethods
-(BOOL) isEqualTo:(id)object;
-(BOOL) isLessThanOrEqualTo:(id)object;
-(BOOL) isLessThan:(id)object;
-(BOOL) isGreaterThan:(id)object;
-(BOOL) isGreaterThanOrEqualTo:(id)object;
-(BOOL) isNotEqualTo:(id)object;
@end
@interface Fraction : NSObject <NSComparisonMethods>
@property int numerator, denumerator;
-(void) print: (BOOL) test;
-(void) setTo: (int) n over: (int) d;
-(double) convertToNum;
-(void) reduce;
-(id) addFrac:(id)f;
-(void) justPrint;
-(id) initWith:(int)n over:(int)f;
+(Fraction *) allocF;
+(int) count;
+(int) gCounter;
@end
Fraction.m
#import "Fraction.h"
@implementation Fraction
@synthesize numerator, denumerator;
-(BOOL) isEqualTo:(id)object
{
Fraction *selfCopy = [[Fraction alloc] init];
if (selfCopy == object)
return YES;
else
return NO;
}
//more methods..
的main.m
#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "Fraction+MathOperations.h"
int main (int argc, const char * argv[]) {
@autoreleasepool {
Fraction *fracA = [[Fraction alloc] init];
Fraction *fracB = [[Fraction alloc] init];
id Object;
[fracA setTo:1 over:4];
[fracB setTo:1 over:4];
Object = fracB;
NSLog(@"%s",[fracA isEqualTo: Object]? "Yes":"No");
}
return 0;
}
是不是它想正常工作?我得到No
没有metter什么.. 是在方法实施中的问题?不能我测试这样的对象(selfCopy == object)
?我应该做selfCopy.numerator
(exedra ..)
明白了..谢谢:) – MNY 2013-02-20 01:04:31
你是什么意思关于“你不需要重新声明NSComparisonMethods”?@vikingosegundo – MNY 2013-02-20 01:06:56
这是他们申明的唯一地方.. @ vikingosegundo – MNY 2013-02-20 01:09:13