NSMutableArray 如何正确添加对象并释放
Posted
技术标签:
【中文标题】NSMutableArray 如何正确添加对象并释放【英文标题】:NSMutableArray how to properly addObjects and release 【发布时间】:2010-10-27 14:37:51 【问题描述】:我担心的是我是否正确添加对象并释放它们。
-
NSMutableArray 实际包含什么 - 对象的副本或只是指向它们的指针?
使用 NSMutableArray 的顺序是什么? (分配、初始化、工作、释放)
如何正确的保留和释放?
NSMutableArray *listData = [[NSMutableArray alloc] init];
int i = 0;
for (i = 0; i < 3; i++)
MyData *obj = [[MyData alloc] init];
NSString *name = nil;
switch (i)
case 0:
name = @"Semen";
break;
case 1:
name = @"Ivan";
break;
case 2:
name = @"Stepan";
break;
default:
break;
obj.name = name;
[listData addObject: obj];
[obj release];
[listData release] //in dealloc method
或者我需要先释放所有包含的对象,然后才释放 NSMutableArray 对象?
谢谢!
【问题讨论】:
【参考方案1】:NSMutable 数组包含对对象的引用。当您将对象添加到 NSMutableArray 时,它将保留该对象。也就是说,在将对象添加到数组后,您应该释放它。当您在数组中处理完该对象后,您可以从数组中删除该对象。移除后,对象会自动收到释放消息。因此,您无需向其发送另一条发布消息。如果您释放数组本身,则无需向所有对象发送释放消息,因为在 NSMutableArray 的释放期间,它将向其包含的所有对象发送释放。
1. 分配 NSMutableArray。 2.分配对象1。 3.将object1添加到数组中。 4.释放对象1。 5.分配对象2。 6.将object2添加到数组中。 7.释放对象2。 8. 以这种方式添加尽可能多的对象。 8. 使用object1。 9. 从数组中删除 object1。它将自动收到释放。 10. 释放阵列。 object2 和其他人将收到释放。希望对你有帮助。
【讨论】:
其实如果用这个方法移除所有对象[array removeAllObjects];所有对象都会自动释放? @badben,是的,当[array removeAllObjects];
被调用时,所有对象都会收到一条释放消息。以上是关于NSMutableArray 如何正确添加对象并释放的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective C中将对象添加到NSMutableArray?
如何将 NSArray 中的对象添加到 NSMutableArray 的末尾?