zoukankan      html  css  js  c++  java
  • 内存管理的思考模式

    自己生成的对象,自己所持有

    使用以下名称开头的方法名意味着自己生成的对象只有自己持有

    • alloc
    • new
    • copy
    • mutableCopy

    下列名称也意味着自己生成并持有对象

    • allocMyObject
    • newThisObject
    • copyThis
    • mutableCopyYourObject

    但是对于以下方法名称,即使用alloc/new/copy/mutableCopy名称开头,并不属于同一类别的方法

    • allocate
    • newer
    • copying
    • mutableCopyed

    非自己生成的对象,自己也能持有

    /*

    取得非自己生成并持有的对象

    */

    id obj = [NSMutableArray array];

    /*

    取得的对象存在,但自己并不持有

    */

    [obj retain]

    /*

    自己持有对象

    */

    不再需要自己持有的对象时释放

    自己生成并持有对象,可通过一下方法实现

    -(id)allocObject//要符合驼峰命名法

    {

        id obj = [[NSObject alloc]init];

        return obj;

    }

    那么[NSMutableArray array]方法使取得的对象存在,但自己不持有对象,又是如何实现的呢

    -(id)object{

        id obj = [[NSObject alloc]init];

        [obj autorelease];

        return obj;

    }

    autorelease使对象在超出指定的生存范围时能够自动并正确的释放。

    无法释放非自己持有的对象

    释放非自己持有的对象会导致程序崩溃

  • 相关阅读:
    如何让WPF程序用上MVVM模式
    wpf开源界面收集
    WPF界面框架的设计
    WPF数据验证
    WPF实用知识点
    wpf的MVVM框架
    数据库中树形结构的表的设计
    ASP.NET MVC 分部视图
    好用的 Visual Studio插件
    ASP.NET MVC3中Controller与View之间的数据传递总结
  • 原文地址:https://www.cnblogs.com/lmg4819/p/8025288.html
Copyright © 2011-2022 走看看