• 内存管理的思考模式


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

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

    • 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使对象在超出指定的生存范围时能够自动并正确的释放。

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

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

  • 相关阅读:
    jquery扩展
    [转][C#]加密解密类
    [转][C#]压缩解压
    [转][C#]程序的动态编译
    [转][C#]Linq 的扩展方法
    [转]Oracle left join right join
    [转]检测到有潜在危险的 Request.Form 值
    IIS 添加 MIME
    [转][Echarts]俄罗斯方块
    01-python爬虫之常见的加密方式
  • 原文地址:https://www.cnblogs.com/lmg4819/p/8025288.html
Copyright © 2020-2023  润新知