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

  • 相关阅读:
    基于MFC的Media Player播放器的制作(1---播放器界面的布局)
    Codeforces 1182
    Codeforces 1169
    Codeforces 1167
    Codeforces 1166
    Codeforces 1148
    *Codeforces 1162
    Codeforces 1159
    点分治
    高斯消元*
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6165296.html
Copyright © 2011-2022 走看看