1、在有ARC之前,我们都是自己手动进行内存管理的,ARC的原理也是基于手动管理的。在今天都遍布ARC的情况下,让我们来了解手动释放内存是怎么一回事。
2、基本概念
a)对象被创建的时候自带的引用计数器retainCount会被赋值为1,即 对象.retainCount=1;
b)对象调用一次retain方法时retainCount会+1,即[对象 retain];
c)对象调用一次release方法时retainCount会-1,即[对象 release];
d)当对象的retainCount等于0的时候,该对象将会被销毁,销毁前会调用dealloc方法;
3、实例
a)Xcode5以上都默认使用ARC,得在工程下手动关闭ARC
b)创建一个Person类先,在main函数里创建,并调用它的retainCount,并逐步调用它的retain和release方法
main.m
#import#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *p = [[Person alloc] init]; NSLog(@"%lu", p.retainCount); // 1 [p retain]; NSLog(@"%lu", p.retainCount); // 2 [p release]; NSLog(@"%lu", p.retainCount); // 1 [p release]; } return 0;}
c)当对象的retainCount等于0时,对象会被销毁,那怎么知道对象被销毁呢,可以重写对象的dealloc方法
Person.m
#import "Person.h"@implementation Person// 对象计数器为0时自动调用此方法- (void)dealloc{ NSLog(@"Person被销毁了"); [super dealloc];}@end