您的位置:首页 > 其它

OC课堂笔记->内存管理

2014-10-22 16:42 204 查看
内存管理

Person * p1 = [[Person alloc]init];

[p1 retain];

NSLog(@"%ld",[p1 retainCount]);

[p1 autorelease];

p1 = nil

NSLog(@"%ld",[p1 retainCount]);

//内存中会出现的问题:内存溢出,野指针.

//为了解决他们这些现象我们有两种方案

//1.gc:垃圾回收机制,可以自动判断哪些内存是不再使用的.由系统帮助我们回收

//MRC:手动内存管理,也叫手动引用计数.retaincount;有我们自己判断哪块内存还在使用,同时判断有多少人在使用;当引用计数为0的时候,内存释放,同时指针置空(防止野指针);

//ARC:自动内存管理,也叫自动引用计数.当我们需要引用计数减1(-1)时,由编译器帮我们添加release语句;

//OC提供了垃圾回收机制,但是IOS并未采用,

//MAC OS 10.8之前使用垃圾回收机制,10.8之后弃用;

//关于引用计数的一些方法

//+alloc:开辟内存,设置引用计数为1;

//-retain:使引用计数加1;

//-copy:将内存或对象复制一份,并将复制的内存或对象引用计数置1;

//-release:使引用计数减1;

//-autorelease:使引用计数减1,只不过是在出自动释放池之后,才执行减一操作;

//-dealooc:当引用计数为0时,由系统自动调用,释放空间.

//自动释放池有两种形式:

//第一种:@autoreleasepool{}

//第二种:NSAutoreleasepool *pool = [NSAutoreleasepool alloc]init];[pool release];

//优先使用第一种;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: