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

  • 相关阅读:
    关于JSONP
    使用stylelint对CSS/Sass做代码审查
    关于input的file框onchange事件触发一次失效的新的解决方法
    HTML5 之 FileReader(图片上传)
    document.domain
    window.hostory(浏览器的历史记录)
    事件DOMContentLoaded和load的区别
    JavaScript中---作用域
    关于repaint(重绘)和reflow( 回流)
    bootstrap兼容性问题
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6165296.html
Copyright © 2011-2022 走看看