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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程序猿-2014 中级黑马   /  2014-4-11 20:42  /  871 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 程序猿-2014 于 2014-4-12 11:09 编辑

- (void)test
{
    [self performSelector:_cmd];
}
只记得这一句会引发死循环     可是为什么会引发死循环呢    有没有简单直白的理解方法....

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
_cmd 代表当前方法的sel 等于就是@selector(test)
所以[self performSelector:_cmd];就等于是-test(),你在一个方法里无限调用自己,当然就死循环了
回复 使用道具 举报
我靠。。刷技术分好明显哈哈哈。。。{:3_47:}
因为每一个方法内部都有一个隐形的sel常理,_cmd ,他与@selector(test)是相同的。
[self performSelector:_cmd]; // 说白了就是自己调用自己,必须就是死循环了。
回复 使用道具 举报
脸皮猴 发表于 2014-4-11 23:31
我靠。。刷技术分好明显哈哈哈。。。
因为每一个方法内部都有一个隐形的sel常理,_cmd ,他与@sele ...

我知道是自己调用自己     我问的是这个题的拆分出来   内存   程序运行的行为
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马