向 NSMutablearray 添加了一个对象并发布

Posted

技术标签:

【中文标题】向 NSMutablearray 添加了一个对象并发布【英文标题】:Added an object to NSMutable array and released 【发布时间】:2011-10-05 13:27:54 【问题描述】:

在我的项目中,从数据库读取的数据分配给分配的对象。在对象被添加到 NSMutableArray 之后。然后释放对象。这样做有什么问题吗? 我的源代码:

     while (sqlite3_step(statement) == SQLITE_ROW) 
               
                TopicEntry *temp = [[TopicEntry alloc] init];
                ruleName = (char *)sqlite3_column_text(statement, 2);

                [temp setTopicName:(ruleName) ?[NSString stringWithUTF8String:ruleName] :@""];
                [temp setParentID:(int)sqlite3_column_int(statement, 2)];
                [rules addObject:temp];
                [temp release];

            

【问题讨论】:

【参考方案1】:

你的代码没问题。

您唯一需要考虑的是,当您拥有一个对象时,您需要释放它。调用init 方法会让你拥有它,所以根据策略你必须释放它,不管你用它做什么。您可以阅读有关政策的所有信息here。

此外,NSMutableArray 将保留通过addObject 传递给它的对象。但这不是您应该考虑的方式,并且可以被视为实现细节。重要的是所有权政策。

【讨论】:

我有疑问,请帮助我。如果我这样写: TopicEntry *t = [TopicEntry alloc] init]; t = [主题 objectAtIndex:0]; //做了一些事情 [t release];这段代码是否会释放 NSMutableArray 中的实际对象?请帮忙,我是这个领域的新手【参考方案2】:

不,就内存分配而言,您的代码看起来不错。

【讨论】:

【参考方案3】:

我说那是完全正确的做法。 rules 将在添加时保留临时对象,并在释放时释放它(或删除对象)。

【讨论】:

以上是关于向 NSMutablearray 添加了一个对象并发布的主要内容,如果未能解决你的问题,请参考以下文章

编码 NSMutableArray

NSMutableArray 如何正确添加对象并释放

从 URL 将对象添加到 NSMutableArray 的更快方法

iOS向数组添加动态值

如何在Objective-C中将二维整数数组对象添加到NSMutableArray?

如何将唯一对象添加到 nsmutablearray?