可能重复:
Do removeAllObjects and release of an NSMutableArray both have the same functionality?
[nsmutablearray removeAllObjects]
和[nsmutablearray release]
的差异?
等待你的帮助。
答案 0 :(得分: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
消息时会导致异常。