zoukankan      html  css  js  c++  java
  • NSArray中地内存管理 理解

    问题:

    通过alloc和init的方法创建了NSArray和NSDictionary,然后通过addobject和setobject:forkey:将object添加进去。通过addobject会自动将我的object进行retain操作。
    可是当我的NSArray和NSDictionary用完了,如果仅仅是将NSArray和NSDictionary进行release操作的话,我添加进去的object好像不会调用自己的dealloc,请问由什么方法可以正确的释放NSArray和NSDictionary,并且将他们里面的object也正确释放,从而防止内存泄露,而且这方法要是安全的(也就是不会误杀,也不会导致读取错误指针)。
    PS:如果是要copy一个NSArray或者NSDictionary的时候,又该如何处理?如果只对NSArray和NSDictionary进行copy的话,NSArray和NSDictionary会分配一个新的指针,可是NSArray和NSDictionary里面的内容还是指向原来的指针。

    答案:

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

    iOS开发者交流群:180080550
  • 相关阅读:
    水仙花数 题解
    数值统计 题解
    平方和和立方和 题解
    第几天? 题解
    Python网络爬虫——http和https协议
    Python网络爬虫——爬虫简介
    python学习——pandas的拼接操作
    python学习——pandas层次化索引
    python学习——pandas扩展:傅里叶变换
    python学习——pandas数据丢失处理
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/4576001.html
Copyright © 2011-2022 走看看