黑马程序员技术交流社区

标题: 带参数的方法,有一点问题 [打印本页]

作者: LeeWong    时间: 2014-10-20 09:47
标题: 带参数的方法,有一点问题
本帖最后由 LeeWong 于 2014-10-20 21:37 编辑
  1. /*
  2. 计算器
  3. 方法:
  4. 1、返回π的值
  5. 2、计算两个数的和
  6. 3、计算某一个数得平方
  7. */

  8. #import<Foundation/Foundation.h>

  9. //类的声明
  10. @interface jisuanqi : NSObject//12行

  11. //返回π的值
  12. - (double)pi;

  13. //计算某个数得平方
  14. - (int)square:(int)num1;

  15. //计算两个数得和
  16. - (int)sum:(int)num1 :(int)num2;

  17. //计算三个数得积
  18. - (int)jiWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;

  19. //计算三个数得积
  20. -(int)ji2:(int)num1 num2:(int)num2 num3:(int)num3;



  21. @end

  22. @implementation jisuanqi

  23. //返回π的值
  24. -(double)pi
  25. {
  26.     return 3.1415926;
  27. }

  28. //计算某个数的平方
  29. -(int)square:(int)num1
  30. {
  31.     return num1*num1;
  32. }

  33. //计算两个数的和
  34. -(int)sum:(int)num1 :(int)num2
  35. {
  36.     return num1+num2;
  37. }

  38. //计算三个数得积
  39. - (int)jiWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3
  40. {
  41.     return num1*num2*num3;
  42. }


  43. -(int)ji2:(int)num1 num2:(int)num2 num3:(int)num3  //有警告
  44. {
  45.     return (num1*num2*num3);
  46. }
  47. @end


  48. int main()
  49. {
  50.     jisuanqi *jsq = [jisuanqi new];
  51.    
  52.     double a = [jsq pi];
  53.     int b = [jsq square:10];
  54.     int c = [jsq sum:10:11];
  55.     int d = [jsq ji:10:11:10];//74行
  56.     int e = [jsq ji2:10:11:10];//75行
  57.    
  58.     NSLog(@"π的值为%f,10的平方为%d,10与11的和为%d,10*11*10=%d,%d",a,b,c,d,e);
  59. }
  60. /*
  61. 出现几个警告:
  62. 带参数的类方法.m:74:18: warning: instance method '-ji:::' not found
  63. (return type defaults to 'id') [-Wobjc-method-access]
  64. int d = [jsq ji:10:11:10];
  65. ^~
  66. 带参数的类方法.m:12:12: note: receiver is instance of class declared here
  67. @interface jisuanqi : NSObject
  68. ^
  69. 带参数的类方法.m:74:9: warning: incompatible pointer to integer
  70. conversion initializing 'int' with an expression of type 'id'
  71. [-Wint-conversion]
  72. int d = [jsq ji:10:11:10];
  73. ^   ~~~~~~~~~~~~~~~~~
  74. 带参数的类方法.m:75:18: warning: instance method '-ji2:::' not found
  75. (return type defaults to 'id') [-Wobjc-method-access]
  76. int e = [jsq ji2:10:11:10];
  77. ^~~
  78. 带参数的类方法.m:12:12: note: receiver is instance of class declared here
  79. @interface jisuanqi : NSObject
  80. ^
  81. 带参数的类方法.m:75:9: warning: incompatible pointer to integer
  82. conversion initializing 'int' with an expression of type 'id'
  83. [-Wint-conversion]
  84. int e = [jsq ji2:10:11:10];
  85. ^   ~~~~~~~~~~~~~~~~~~
  86. 4 warnings generated.
  87. */

  88. 问题出在了,求三个数的积那段代码  但是看不懂下面的警告,是什么意思啊!  该怎么改啊

















复制代码




作者: 魔法少年十三    时间: 2014-10-20 14:09
    int b = [jsq square:10];
    int c = [jsq sum:10:11];
    int d = [jsq jiWithNum1:10 andNum2:11 andNum3:10];//74行
    int e = [jsq ji2:10 num2:11 num3:10];//75行

注意你的动态方法名,你的调用写法有问题
作者: LeeWong    时间: 2014-10-20 15:15
魔法少年十三 发表于 2014-10-20 14:09
int b = [jsq square:10];
    int c = [jsq sum:10:11];
    int d = [jsq jiWithNum1:10 andNum2:11  ...

恩,看视频,没看仔细!谢谢啦!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2