目标:掌握引用计数的概念,学会使用release 释放对对象的引用
原理:ios内存管理机制是通过使用引用计数器来管理内存的,每一个对象都拥有一个retainCount,当对象刚创建时,其retainCount为1,当向对象发送retain消息时,其retainCount计数器+1,当向对象发送release消息时,其retainCount-1,且当一个对象的retainCount 为0时,系统会自动调用该对象的dealloc()方法。
首先:我们创建了一个Person对象
让其在.m文件中重写dealloc()方法,
#import "Person.h"
@implementation Person
- (void)dealloc
{
NSLog(@"Person dealloc");
[super dealloc];
}
@end
然后:在main文件中
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// create person object
Person *jack = [[Person alloc] init]; //retainCount = 1
NSLog(@"jack1 retainCount = %ld",[jack retainCount]);
[jack retain]; //retainCount = 2
NSLog(@"jack2 retainCount = %ld",[jack retainCount]);
[jack retain]; //retainCount = 3
NSLog(@"jack3 retainCount = %ld",[jack retainCount]);
[jack release]; //retainCount = 2
NSLog(@"jack release retainCount = %ld",[jack retainCount]);
[jack release]; //retainCount = 1;
NSLog(@"jack release retainCount = %ld",[jack retainCount]);
[jack release]; //retainCount = 0; jack对象销毁,自动调用dealloc方法
}
return 0;
}