A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 gclforios 于 2015-6-17 16:18 编辑

基类接口文件

  1. #import <Foundation/Foundation.h>

  2. @interface Fraction : NSObject

  3. @property (nonatomic ) int numerator,denominator;

  4. -(void)setTo:(int) n over:(int) d;

  5. -(void)reduce;//约分
  6. -(NSString *)description;//显示方法重写


  7. @end
复制代码

基类的实现文件

  1. #import "Fraction.h"

  2. @implementation Fraction

  3. @synthesize  numerator,denominator;

  4. -(void)setTo:(int) n over:(int) d
  5. {
  6.     numerator =n;
  7.     denominator=d;
  8. }
  9. -(void)reduce
  10. {
  11.     int u=numerator;
  12.     int v=denominator;
  13.     int temp;
  14.    
  15.     while (v!=0)
  16.     {
  17.         temp=u%v;
  18.         u=v;
  19.         v=temp;
  20.     }
  21.     numerator/=u;
  22.     denominator/=u;
  23. }

  24. -(NSString *)description
  25. {
  26.     [self reduce];
  27.     return [NSString stringWithFormat:@"%d/%d",numerator,denominator];
  28. }
  29. @end
复制代码


为其添加分类单独放在一个文件中

  1. #import "Fraction.h"

  2. //实现Fraction的分类
  3. @interface Fraction (MathOps)

  4. //+
  5. -(Fraction *)add:(Fraction *)f;
  6. //X
  7. -(Fraction *)mul:(Fraction *)f;
  8. //-
  9. -(Fraction *)sub:(Fraction *)f;
  10. //约分
  11. -(Fraction *)div:(Fraction *)f;

  12. @end


  13. //实现部分
  14. @implementation Fraction (MathOps)


  15. //将两个分数相加
  16. //a/b+c/d=(a*d)+(b*C)/db
  17. -(Fraction *)add:(Fraction *)f
  18. {
  19.     //定义临时变量
  20.     Fraction *result=[Fraction new];
  21.    
  22.     result.numerator=numerato*f.denominator)+(denominator*f.numerator);
  23.     result.denominator=denominator*f.denominator;
  24.    
  25.     [result reduce];
  26.    
  27.     return result;
  28.    
  29. }
  30. //X
  31. -(Fraction *)mul:(Fraction *)f
  32. {
  33.    
  34. }
  35. //-
  36. -(Fraction *)sub:(Fraction *)f
  37. {
  38.    
  39. }
  40. //约分
  41. -(Fraction *)div:(Fraction *)f
  42. {
  43.    
  44. }
  45. @end
复制代码



问题:为啥分类中    result.numerator=numerato*f.denominator)+(denominator*f.numerator);的出现use of undeclared identifier提示,我不是已经包含基类.h文件了吗?

1 个回复

倒序浏览
我明白了,我把定义合成方法时numerator和调用使用不使用self记混了,加上self即可
  1. result.numerator=(self.numerator*f.denominator)+(self.denominator*f.numerator);
  2.     result.denominator=self.denominator*f.denominator;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马