首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[nsmutablearray removeAllObjects]和[nsmutablearray释放]的差异

[nsmutablearray removeAllObjects]和[nsmutablearray释放]的差异
EN

Stack Overflow用户
提问于 2011-04-23 03:34:41
回答 1查看 2K关注 0票数 1

可能重复:

Do removeAllObjects and release of an NSMutableArray both have the same functionality?

[nsmutablearray removeAllObjects][nsmutablearray release]的差异

等着你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-04-23 03:52:30

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

代码语言:javascript
复制
NSMutableArray* i = [NSMutableArray arrayWithCapacity:1];
[i removeAllObjects];

或,

代码语言:javascript
复制
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消息时会导致异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5761979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档