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

     

  • 相关阅读:
    [网络基础 ] 分层体系结构
    网络的基础知识
    计算机网络基础知识总结
    理解urllib、urllib2及requests区别及运用
    js ajax请求
    c# winform导出Excel
    mysql小技巧
    “允许源文件与模块生成文件不同” 解决方法 ,亲测最有效的
    ThoughtWorks.QRCode生成二维码
    python3.5.2爬虫
  • 原文地址:https://www.cnblogs.com/wxios/p/4174988.html
Copyright © 2011-2022 走看看