Objective -C内存管理

手动内存管理的基本概念

面试会被问到

一:创建对象
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值