可能重复:
Do removeAllObjects and release of an NSMutableArray both have the same functionality?
[nsmutablearray removeAllObjects]与[nsmutablearray release]的差异
等着你的帮助。
发布于 2011-04-23 03:52:30
首先,您询问的两个方法都是实例方法,而不是类方法。也就是说,它们只能在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消息时会导致异常。
https://stackoverflow.com/questions/5761979
复制相似问题