zoukankan      html  css  js  c++  java
  • OC-内存管理中部分.h文件和.m文件中的代码,注释很重要

    .h文件

    -----------------------------------------

    #import <Foundation/Foundation.h>

    #import "Car.h"

     

    @interface Person : NSObject

    {

        

        Car *_car;

        NSString *_name;

    }

    -(void)setName:(NSString *)name;

    -(NSString *)name;

     

    -(void)setCar:(Car *)car;

    -(Car *)car;

     

    -(void)drive;

     

    @end

     

     

    .m文件

    -----------------------------------------

    #import "Person.h"

     

    @implementation Person

    -(void)setName:(NSString *)name{

        if (_name!=name) {

            //release 旧值

            [_name release];

            //retain 新值

            _name=[name retain];

        }

    }

    -(NSString *)name{

        return _name;

    }

     

    -(void)setCar:(Car *)car{

        if (_car!=car) {//用这个是怕两次传入同一个c1,那样会照成野指针错误

            

            //c1=2->c1=1

            [_car release];//当第一次c1传进来的时候,因为之前没有任何车传入,所以_car=nil.[nil release]执行不报错,但是也无效 * //当c2传进来的时候,c1之前在main函数中已经release一次了,c1已经为1了,且当前_car就是c1,所以c2进来时候,c1(_car)release后,retainCount=0,自动调用dealloc销毁,[旧值 release]

            //c1 =2->c2=2

            _car=[car retain];//当第一次c1传进来的时候,c1=1+1=2了,* 当c2传进来的时候,c2由1变成2,退出,回到main函数

        }

    }

    -(Car *)car{

        

        return _car;

    }

     

    -(void)drive{

        

        [_car run];

        

    }

     

    //-(NSString  *)description{

    //

    //    return [NSString stringWithFormat:@"age is %d",_age];

    //}

     

    -(void)dealloc{

        //此时的已经是c2了,c2=0

        [_car release];//c2已经传进来,("此时的car"=_car),此时的_car再release一次,也销毁来

        [_name release];

        NSLog(@"Person 对象被销毁!"); //  打印4:Person 对象被销毁!

        

        [super dealloc];

    }

     

    @end

     

  • 相关阅读:
    继承
    iOS 适配暗黑模式
    【C++ STL】容器的选择
    纳税相关
    SwiftUI状态绑定:@State
    python 中各种容器可以容纳的数据类型
    open GL 在使用材质属性glMaterial设置物体颜色效果时,使用shader和使用固定管线后颜色区别
    做为一名测试工程师,你经常会用到或听到的那些工具
    推荐一款技术人必备的接口测试神器:Apifox
    测试管理工具推荐
  • 原文地址:https://www.cnblogs.com/wxios/p/4174988.html
Copyright © 2011-2022 走看看