Objective -C内存管理

来源:互联网 发布:mac php环境配置 编辑:程序博客网 时间:2024/06/01 19:58

手动内存管理的基本概念

面试会被问到

一:创建对象
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 被销毁了");}
0 0
原创粉丝点击