黑马程序员技术交流社区

标题: 类方法中能不能调用对象方法 [打印本页]

作者: liu01230    时间: 2015-5-17 20:53
标题: 类方法中能不能调用对象方法
我在类方法中调用对象方法为什么会无限循环啊?
  1. - (void)eat
  2. {
  3.     NSLog(@"---吃饭了");
  4. }
  5. + (void)eat
  6. {
  7.     [self eat];
  8.     NSLog(@"+++吃饭了");
  9. }
复制代码

编译的时候没有出错,但是运行的时候后就无限循环



作者: cogddo    时间: 2015-5-17 20:58
类调用self指的是类,对象调用self调用的时对象,死循环是因为 你在+ (void)eat又调用了 + (void)eat。
作者: ~缘~    时间: 2015-5-17 23:29
不可以啊
作者: 中哥太强大了    时间: 2015-5-19 08:41
2楼正解
作者: mony    时间: 2015-5-19 08:53
比如你这是在Dog类里写的,那么你的类方法想调用对象方法,需要[[Dog alloc] eat];这么调用就行.我记得这样可以
作者: wodeheimalife    时间: 2015-5-19 10:05
你调用的还是类方法
作者: liu01230    时间: 2015-5-19 23:16
cogddo 发表于 2015-5-17 20:58
类调用self指的是类,对象调用self调用的时对象,死循环是因为 你在+ (void)eat又调用了 + (void)eat。 ...

哦。原来如此,我还以为是self只是对象呢
作者: liu01230    时间: 2015-5-19 23:17
mony 发表于 2015-5-19 08:53
比如你这是在Dog类里写的,那么你的类方法想调用对象方法,需要[[Dog alloc] eat];这么调用就行.我记得这样 ...

恩。知道了,谢谢了啊




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