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

  • 相关阅读:
    java
    java
    android-studio于java相关
    转-Cannot refer to an instance field arg while explicitly invoking a constructor
    java
    java
    hdoj 1251 统计难题(字典树)
    hdoj 3555 Bomb(DFA+dp)
    hdoj 1247 Hat’s Words(字典树)
    poj 1204 Word Puzzles(字典树)
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6165296.html
Copyright © 2011-2022 走看看