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

     

  • 相关阅读:
    Java 和 DynamoDB
    关于Mongodb的全面总结
    utf8mb4 使用注意
    mysql 事务隔离讲的比较好的文章收藏。
    [mysql] 常用命令总结
    [JTA] Java事务api
    [Hibernate] Hibernate 参数设置一览表(转)
    Spring配置sessionFactory的几种常用方式
    [前端] org.apache.jasper.JasperException 页面有空引用
    [Hibernate] JPA与Hibernate的优缺点
  • 原文地址:https://www.cnblogs.com/wxios/p/4174988.html
Copyright © 2011-2022 走看看