黑马程序员技术交流社区
标题:
关于 Release 的奇怪问题, 求小神门解答
[打印本页]
作者:
wwwwjay
时间:
2015-5-27 08:55
标题:
关于 Release 的奇怪问题, 求小神门解答
本帖最后由 wwwwjay 于 2015-5-27 10:35 编辑
int main(int argc, const char * argv[])
{
hehe* student;
@autoreleasepool
{
student = [hehe createHehe];
[student retain];
NSLog(@"retainCount %lu", [student retainCount]);
}
NSLog(@"retainCount %zi", [student retainCount]);
return 0;
}
+ (id) createHehe
{
id p = [[[hehe alloc] init ] autoRelease];
return p;
}
这样输出结果为 2, 1
但是我将retain操作 注释了为什么是 1,1 而不是1,0?
作者:
wwwwjay
时间:
2015-5-27 13:43
淫儿那?
作者:
天是蓝色的
时间:
2015-5-27 22:06
前来学习
作者:
yuang4074
时间:
2015-6-4 18:14
本帖最后由 yuang4074 于 2015-6-4 18:17 编辑
你注释后,出了池子后,该student对象在实际环境已经能够变成了僵尸对象,如果你开启僵尸模式,就会检测出来。显然你没开,这是程序没检测出来,就会认为student对象还可以使用。可以发送消息,此时指针还是指向的它。于是得出错误结论。建议规范写代码,避免出现不必要的bug。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2