zoukankan      html  css  js  c++  java
  • Objective C数组的内存管理

    在addObj后及时释放所添加的object

    NSMutableArray *array = [NSMutableArray new]; 
    
    NSString *str = [[NSString alloc] initWithFormat:@"a"]; 
    
    [array addObject:str]; 
    
    [str release]; 
    
    [array release]; 
    也就是说当你吧str放进array的时候,相当于创建了一个str的副本,而这个副本的生命周期也就交给了array来管理了,  你只要负责把原来的对象进行释放也就可以了。[array release]的时候会调用相应的方法对数组里面的元素进行释放。简单来说也就是谁污染谁治理了。

    下面代码引用计数变化做了注释:

    User *user = [[User alloc] init];     // user retainCount = 1
    [nsarray addObject:user];             //retainCount = 2, 加到array里面的时候,array做了一次retain
    [user release];                            //  user  retainCount = 1
    // array自己dealloc的时候,会把每个元素release一次
    O了,上面就平衡了

  • 相关阅读:
    C# 线程之间切换
    工厂方法(创建型)
    单例模式(创建型)
    HTTP请求超时
    命令模式
    Asp.Net Core EF Migrations(二)
    Asp.Net Core EF Migrations
    Vue父子组件之间的通讯(学习笔记)
    数组的方法(笔记)
    Vue-router入门
  • 原文地址:https://www.cnblogs.com/ghj1976/p/2513065.html
Copyright © 2011-2022 走看看