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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我在类方法中调用对象方法为什么会无限循环啊?
  1. - (void)eat
  2. {
  3.     NSLog(@"---吃饭了");
  4. }
  5. + (void)eat
  6. {
  7.     [self eat];
  8.     NSLog(@"+++吃饭了");
  9. }
复制代码

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


7 个回复

倒序浏览
类调用self指的是类,对象调用self调用的时对象,死循环是因为 你在+ (void)eat又调用了 + (void)eat。
回复 使用道具 举报
不可以啊
回复 使用道具 举报
2楼正解
回复 使用道具 举报
比如你这是在Dog类里写的,那么你的类方法想调用对象方法,需要[[Dog alloc] eat];这么调用就行.我记得这样可以
回复 使用道具 举报
你调用的还是类方法
回复 使用道具 举报
cogddo 发表于 2015-5-17 20:58
类调用self指的是类,对象调用self调用的时对象,死循环是因为 你在+ (void)eat又调用了 + (void)eat。 ...

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

恩。知道了,谢谢了啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马