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];
//优先使用第一种;