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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {
  4.     //1
  5.     Person *p = [[Person alloc] init];

  6.     //当对象计数器归0后会调用一次dealloc方法,也代表这个对象消失,就算用retain也无法返回
  7.     [p release];
  8.    
  9.     p.age = 20;
  10.     NSLog(@"age=%d", p.age);
  11.    
  12.    

  13.     return 0;
  14. }
复制代码

这是我根据视频跟随着敲打的代码,来到这一段,我在调用了[p release]后,计数器应该为0,dealloc的遗言也出来了,这时候对象内存应该消失了,为什么我还可以调用。p.age = 20这个setter方法?并且打印了age=20?

2 个回复

倒序浏览
“默认情况下,Xcode是不会管僵尸对象的,使用一块被释放的内存也不会报错。为了方便调试,应该开启僵尸对象监控”
发不了图。。
回复 使用道具 举报
从今以后 发表于 2014-11-28 18:38
“默认情况下,Xcode是不会管僵尸对象的,使用一块被释放的内存也不会报错。为了方便调试,应该开启僵尸对 ...

谢谢,我忘记了,你一说我就想起来了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马