【问题标题】:Difference of [nsmutablearray removeAllObjects] and [nsmutablearray release] [duplicate][nsmutablearray removeAllObjects] 和 [nsmutablearray release] 的区别 [重复]
【发布时间】:2011-04-23 03:34:41
【问题描述】:

可能重复:
Do removeAllObjects and release of an NSMutableArray both have the same functionality?

[nsmutablearray removeAllObjects][nsmutablearray release]的区别?

等待您的帮助。

【问题讨论】:

    标签: objective-c nsmutablearray release


    【解决方案1】:

    首先,您询问的两种方法都是实例方法,而不是类方法。即,它们只能在 NSMutableArray 类的实例上调用--

    NSMutableArray* i = [NSMutableArray arrayWithCapacity:1];
    [i removeAllObjects];
    

    或者,

    NSMutableArray* j = [[NSMutableArray alloc] initWithCapacity:1];
    [j release];
    

    removeAllObjects,嗯,清空数组,并向从数组中删除的每个对象发送release 消息。但是,数组对象本身仍然存在,您以后可以通过执行 [i addObject:obj] 向其中添加项目,其中 obj 是有效对象。

    release 另一方面,放弃对数组对象的控制,并将其保留计数减 1。当对象的保留计数达到 0 时,它将从内存中释放。数组对象的重新分配将导致向存储在数组中的每个对象发送release 消息。

    arrayWithCapacity 方法将i 创建为自动释放对象,您无需对其调用release。如果这样做会导致对象为dealloc-ed,那么稍后当NSAutoReleasePool 对象向它发送release 消息时,它会导致异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2013-03-23
      • 2011-03-23
      • 2010-11-23
      相关资源
      最近更新 更多