黑马程序员 - C语言 -手动管理内存快速入门

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

/*
 
 
 1.引用计数器
 
     用来保存当前对象有几种东西在使用它(数字)
 
 
 2.引用计数器的作用
 
     用来判断当前对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要回收当前对象的内存空间)
 
 
 3.引用计数器的操作
 
     retain            使得引用计数器+1
     release           使得引用计数器-1
     retainCount       得到引用计数器的值
 
 
 4.如果一个对象释放的时候,会有“临终遗言”(会调用该对象的dealloc方法)
 
     注意:
        1)dealloc方法是NSObject,一般我们会重写dealloc方法
         2)在dealloc方法的内容,我们要调用[super dealloc]
 
 
 5.手动内存管理
 
             MRC 是手动内存管理
             ARC 是自动内存管理
 
     注意,我们创建一个项目,此时默认是ARC的(自动内存管理)把项目从ARC的模式改成MRC模式
 
 
 
 
 
 */


#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc,const char * argv[]) {
    @autoreleasepool {
        
//        创建一个Person的实例对象
        Person *p = [[Personalloc]init];  //对象有没有所有者?有
        //证明有一个所有者
        NSUInteger count = [p retainCount];
        NSLog(@"count = %lu",count);      // %lu指无符号
        
        //使用所有者+1
        Person *p2 = [p retain];
        NSLog(@"p2 = %lu",[p2retainCount]);
        
        //如果想要对象回收,想办法使 retainCount= 0
        [p release];  // 1
        [p release]; // 此处执行后p的空间会被回收
         NSLog(@"p = %lu",[pretainCount]);
//        证明p空间被回收,可以在Person类中,重写dealloc方法
        
        
    }
    return 0;
}

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@end



Person.m

//
//  Person.m
//  OC7-MRC内存管理
//
//  Created by 陈家劲 on 15/11/9.
//  Copyright © 2015年陈家劲. All rights reserved.
//

#import "Person.h"

@implementation Person
//dealloc方法是对象的临终遗言方法
//对象被回收或者被销毁时,会默认启动该方法

//注意 dealloc方法是系统自动调用的 引用计数器的值自动调用的 不需要手动调用

- (void)dealloc
{
    
//    1)先释放子类自己的内存空间
    NSLog(@"Person已经挂掉了");
//    2)在释放父类
    [super dealloc];
}

@end






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值