黑马程序员技术交流社区

标题: 类方法中可以调用对象方法吗? [打印本页]

作者: 胡铭    时间: 2014-5-5 10:34
标题: 类方法中可以调用对象方法吗?
类方法中可以调用对象方法吗?调用的时候格式是怎样的?

作者: zfan    时间: 2014-5-5 10:42
本帖最后由 zfan 于 2014-5-5 20:14 编辑

可以的,我记得在MJ老师的圆的方法那一集视频里有过应用,因为这里和java语言有区别,所以我印象比较深,java里面静态方法是不能调用非静态的方法的,但是OC语法里面似乎对这个比较“宽容”。并且在类方法调用这个对象方法时,已经建立了该对象方法所属的对象了,所以能够调用成功。
摘录部分代码如下:

  1. @implementation Point2D

  2. ...

  3. - (double)distanceWithOther:(Point2D *)other
  4. {
  5.   double xDelta = [self x] - [other x];
  6.   double xDeltaPF = pow(xDelta, 2);
  7.   double yDelta = [self y] - [other y];
  8.   double yDeltaPF = pow(yDelta, 2);
  9.   return sqrt(xDeltaPF + yDeltaPF);
  10. }
  11. + (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2;      //此处类方法调用了上面的对象方法
  12. {
  13.   return [p2 distanceWithOther:p1];
  14. }

  15. ...

  16. @end
复制代码


作者: 桑托尔    时间: 2014-5-5 11:18
可以,不过需要把对象方法作为形参传进去
  1. //        人类方法的实现
  2. @implementation Person
  3. //        对象方法,打印自己的年龄
  4. -(void)test
  5. {
  6.         NSLog(@"My age is %d",_age);
  7. }
  8. //        类方法,但是需要传入一个Person创建出的对象
  9. +(void)testWithPerson:(Person *)p
  10. {
  11.         [p test];
  12. }
  13. @end
复制代码

这样就可以调用了
作者: ww384661784    时间: 2014-5-5 20:47
可以啊!!!!!!!!!!!!!!!!!!!




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