【问题标题】:Info about re-alloc of an object关于对象重新分配的信息
【发布时间】:2011-09-15 15:48:37
【问题描述】:

我有一个问题...如果我有一个 NSMutableArray 并且如果我使用它...例如 100 个对象...如果我使用此代码:

mutablearray=[NSMutableArray alloc]init];

并在数组中添加其他 100 个对象...前 100 个对象已被释放(因此内存是空闲的)或者我必须执行 [mutablearray release] 来释放内存? 谢谢

【问题讨论】:

    标签: iphone objective-c nsmutablearray


    【解决方案1】:

    如果 mutablearray 被保留或通过复制属性使用,那么你肯定需要释放它。如果您不使用 mutablearray 作为属性,那么您将需要查看以下内容: 将一个对象添加到 NSMutableArray 会将其保留计数增加 1,使其保留计数为 2(分配/初始化为 1,添加到数组中为 1)。

    因此 removeAllObject 将负责增加数组的保留计数,您不必担心。只需致电: [mutablearray removeAllObjects];

    【讨论】:

    • 如果你正在释放数组,则无需调用removeAllObjects。此外,视网膜计数的绝对值是没有意义的。
    【解决方案2】:

    您需要或删除阵列中的所有对象。在这种情况下,您不需要新数组。 或者释放数组,释放数组时释放它所有的对象。

    【讨论】:

      【解决方案3】:

      您必须使用 [mutablearray release] 来释放内存,因为释放对象不会释放数组的内部结构。 此外,您不应该释放数组中的对象,而是使用 NSArray 的任何 remove... 命令从数组中删除它们

      【讨论】:

      • 或者只是释放数组;当数组被释放时,它会释放其中的所有对象。
      猜你喜欢
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      相关资源
      最近更新 更多