在while循环中添加到数组时泄漏
|
我有一个名为:“ 0”的函数,此函数将sqlite数据库中的项目(文章)添加到“ 1”,此处此函数的工作方式:
- (void) AddSortedCustomFeed :(NSMutableArray*)rssList {
NSLog(@\"\\n\\n\\n ----- Add Sorted SQL Database -----\");
NSLog(@\"Start\");
// Create Query String.
NSString* sqliteQuery = [NSString stringWithFormat:@\"SELECT mainLink, title, summary, pubDate, author, imageLink, body, favorites, pubdatetime FROM ARTICLES WHERE customfeed = \'Y\' ORDER BY pubdatetime DESC\"];
NSLog(@\"Query String is: %@\", sqliteQuery);
// Pointer to Article and Statement.
Article* article;
sqlite3_stmt* statement;
// Prepare SQL for work.
if( sqlite3_prepare_v2(articlesDB, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK ) {
// Get next row from database.
while( sqlite3_step(statement) == SQLITE_ROW ) {
// Alloc and init article.
article = [[Article alloc] initWithValues:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 1)]
mainLink:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 0)]
summary:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 2)]
pubDate:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 3)]
author:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 4)]
imageLink:[NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 5)] ];
//article.body = [NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 6)];
NSString* favo = [NSString stringWithUTF8String:(const char*)sqlite3_column_text(statement, 7)];
article.favorite = [favo hasPrefix:@\"N\"] ? NO : YES;
// Add to list.
[rssList addObject:article];
// Release article.
[article release];
}
}
else NSLog( @\"SortSQLDatabase: Failed from sqlite3_prepare_v2. Error is: %s\", sqlite3_errmsg(articlesDB) );
// Finalize and close database.
sqlite3_finalize(statement);
NSLog(@\"End\\n\\n\\n\");
}
您如何在此函数中看到我创建了文章Article* article;
,并在while循环分配中对其进行了初始化。之后,我将Article对象添加到NSMutableArray
,然后释放它,但随后我调用[article release];
巫婆必须调用它不调用的delloc函数?我不明白为什么。我尝试了不同的方式,但是所有尝试都崩溃了。这是关于文章类的文章-链接
没有找到相关结果
已邀请:
2 个回复
抵浮细
P.P.S:如果您按下\'Shift + Cmd + A \',则XCode将静态分析您的代码并查找泄漏/内存事故。我有一种感觉,它将找到一些。
完趣镐
,就需要从头开始制作
。所以你可以做类似的事情
然后离开
不过,请务必从上方取出
行。这可能是您不想要的大量开销。 您可以使所有内容保持不变,然后向下移动
,这样它就在循环之外。