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

来源:互联网 发布:mac虚拟机镜像文件 编辑:程序博客网 时间:2024/06/05 07:57

------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@endPerson.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