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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 菜鸟八哥 中级黑马   /  2015-1-14 20:51  /  832 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

引用计数器的操作:
1.给对象发送一条retain消息,可以使引用计数器值+1(retain方法返回对象本身)
2.给对象发送一条release消息,可以使引用计数器值-1
3.可以给你对象发送retainCount消息获得当前的引用计数器值

对象的销毁
1.当一个对象的引用计数器的值为0时,那么它将被销毁,其占用的内存被系统回收
2.当一个对象被销毁时,系统会自动向对象发送一条dealloc消息
3.一般会重写dealloc方法,在这里释放相关资源,dealloc就像对象的遗言
4.一旦重写dealloc方法,就必须调用[super dealloc],并且放在最后门调用
5.不要直接调用dealloc方法
6.一旦对象被回收了,它占用的内存就不再可用,坚持使用会导致程序崩溃(野指针错误:野指针是指向僵尸对象(不可用内存)的指针)



#import<Foundation/Foundation.h>

@interface Person :NSObject


@end

@implementation Person
-(id)dealloc
{


[super dealloc];//这句一定要放到最后面
}

@end

int main()
{
Person *p = [[Person alloc] init];
NSUInteger c = [p retainCount];//返回当前计数器的值

NSLog(@"计数器:%ld,c");

//2 retain方法返回的是对象本身,即哪哥对象调用它,就返回哪个对象

[p retain];//使计数器+1,并返回p

[p release]// 计数器-1

[p release] //此时,计数器变为0了,对象被回收 且 系统即将调用dealloc方法
//空指针
p = nil //对象被回收后,原来的指针就成野指针,把野指针清空,可以使P和原对象内存没有指向关系

return 0 ;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马