1.引用计数是为了计算机记住程序在执行的对像时是否已经全部释放对象的内存
//alloc创建一个新对象,并且新对象的引用计数为1
Student *stu = [[Student alloc] init];
//获取对象的引用计数
NSLog(@"%u", [stu retainCount]);
//retain使引用计数加1
[stu retain];
NSLog(@"%u", [stu retainCount]);
//release使引用计数减1,如果引用计数为0的话,对象被系统释放
[stu release];
//一次autorelease只相当于一次release
[stu03 autorelease];
使用alloc/new/copy/create,一定需要release
使用类方法得到的对象,一定是一个autorelease对象,不需要释放。自定义的方法,如果不是用alloc/new/copy/create开头的,一定要返回autorelease对象。//谁创建谁释放
+ (Student *)student
{
Student *stu = [[Student alloc] init];
//对象会延时释放,使引用计数减1
// [stu autorelease];
return [stu autorelease];
}
//系统在该对象销毁前自动调用,一定不能手动调用
- (void)dealloc
{
NSLog(@"dealloc: %@", self);
//如果一个类使用手动引用计数,并且实现了dealloc方法,就必须在dealloc方法里调用父类的dealloc方法
[super dealloc];
}
在使用手动引用计数之前应该将下面设置为-fno-objc-arc
?
原文地址:http://www.cnblogs.com/niang123/p/3864673.html