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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tz19900926 中级黑马   /  2015-9-25 14:37  /  1080 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 tz19900926 于 2015-9-25 14:41 编辑
  1. <span style="line-height: 2.2em;">@implementation Person    //在person.m文件中重新定义dealloc方法</span>
复制代码
  1. - (void)dealloc
  2. {NSLog(@"dealloc finish");      //当系统向对象发送dealloc方法时打印此句
  3.     [super dealloc];}
  4. @end
  5. int main(int argc, const char * argv[]) {    //在main函数中,生成和销毁对象内存空间
  6.     @autoreleasepool {
  7.         Person *p1 = [Person new];            //创建一个对象    此时retaincount =1;
  8.         [p1 retain];                                      //retain用来增加对象的引用计数器的值(+1)
  9.         NSLog(@"%lu",p1.retainCount);              
  10.         [p1 release];                                   //release用来减少对象的引用计数器的值(-1)
  11.         NSLog(@"%lu",p1.retainCount);     
复制代码
分享一下学到的
oc内存管理中主要管理的是堆区,当我们用过的对象不再需要使用时我们应该将对象的空间释放;
每个对象都有一个引用计数器(retainCount)来记录被引用的个数,当他等于值等于0时系统就会发送dealloc消息给这个对象,就会释放对象的空间
此节中学到了
retain    是让对象的引用计数器+1
releas  让对象的引用计数器 -1
retainCount 的值是对象的被引用个数
我们可以通过重定义dealloc方法来验证对象有没有被释放,在类的.m文件中编写
(void)dealloc
{NSLog(@"dealloc finish");      //当系统向对象发送dealloc方法时打印此句,当我们在main函数中将引用计数器变为0时便可验证系统有没有给对象发送此消息
[super dealloc];}

1 个回复

倒序浏览
代码引用怎么使用的呀好乱啊。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马