zoukankan      html  css  js  c++  java
  • 多个对象的内存管理分析

    //

    //  main.m

    //  03-多个对象的内存管理分析

    //

    //  Created by apple on 14-3-17.

    //

    //

    #import <Foundation/Foundation.h>

    //人拥有一辆汽车

    #import "Person.h"

    //1.野指针问题

    //2.内存泄漏问题

    int main(int argc, const char * argv[])

    {

        @autoreleasepool {

            

            // 1

            Person * p = [[Person alloc] init];

            

            // 1

            Car * car = [[Car alloc] init];

        

            //2

            [p setCar:car];

            

            [p drive];

         

           

            //1

            [car release];

            

            //要保证对象p 存在的时候,调用对象p的任何方法都不会出错

            [p drive];

            

            //0

            [p release];

            

        }

        return 0;

    }

    //

    //  Person.m

    //  01-手动内存管理基本概念

    //

    //  Created by apple on 14-3-17.

    //

    //

    #import "Person.h"

    @implementation Person

    - (void)setCar:(Car *)car

    {

        //2,能够使得retainCount + 1 并且返回self

        _car  = [car retain];

    }

    - (Car *)car

    {

        return _car;

    }

    - (void)drive

    {

        [_car run];

    }

    - (void)dealloc

    {

        //目的是要保证在p对象存在的时候,car对象一定存在

        //对象p被销毁的时候,

        [_car release];

        [super dealloc];

        NSLog(@"Person 被销毁了");

    }

    @end

  • 相关阅读:
    L1-031 到底是不是太胖了
    L1-030 一帮一
    PyCharm--git配置
    websocket--python
    UDP--python
    TCP--python
    pytest--metadata
    pytest--xdist
    pytest--夹具
    pytest--变量
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6165296.html
Copyright © 2011-2022 走看看