手动内存管理的基本概念
面试会被问到
一:创建对象
1:分配内存空间,存储对象
2 : 初始化成员变量
3:返回对象的指针地址
二:
1:对象在创建完成的同时,内部会自动创建一个引用计数;这个计数器,使系统用来判断是否回收对象的唯一依据,当我们的引用计数
retainCount=0,系统会毫不犹豫回收当前对象。
2:[对象 release],release对象方法,每调用一次,retainCount-1。
3:[对象 retain],retain对象方法,每调用一次,retainCount+1;返回self
4:当retainCount=0,对象被销毁
由于Xcode创建项目时默认ARC机制,学习手动内存管理时需要关掉ARC机制。
5:dealloc函数,当一个对象要被销毁时,系统会自动调用dealloc函数,通知对象将要被销毁。
内存管理原则(配对原则):只要出现了 new,alloc,retain,就一定配对出现一个release,autorelease
/
// main.m
// 01-手动内存管理基本概念
//
// Created by aplle
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 1
Person * p = [[Person alloc] init];
NSLog(@"%lu",p.retainCount);
// 2
[p retain];
NSLog(@"%lu",p.retainCount);
// 1
[p release];
NSLog(@"%lu",p.retainCount);
//0
[p release];
}
return 0;
}
//
// Person.m
// 01-手动内存管理基本概念
//
//
#import "Person.h"
@implementation Person
-(void)dealloc
{
//在对象自身被销毁之前,一定要先调用[super dealloc]释放父类中的相关对象
[super dealloc];
NSLog(@"Person 被销毁了");
}