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

时间:2011-10-05 13:27:55

标签: objective-c xcode object nsmutablearray release

在我的项目中,从数据库读取的数据被分配给已分配的对象。将对象添加到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];

            }

3 个答案:

答案 0 :(得分:1)

您的代码没问题。

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

此外,NSMutableArray将保留通过addObject传递给它的对象。但这不是你应该如何思考它,可以被认为是一个实现细节。重要的是所有权政策。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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