既にテーブルに保存した Facebook フィードを取得しようとしています。Sqlite テーブルからデータを取得した後、メモリ リークがほとんど発生しません。
私のコードは: -
-(void)viewWillAppear:(BOOL)animated
{
[self loadFBPostsfromDB];
}
//Calling function loadFBPostsfromDB
- (void) loadFBPostsfromDB{
//m_db = [[SQLHelper alloc] init];
if (fbPostArray!=nil) {
[fbPostArray release];
fbPostArray=nil;
}
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
SQLHelper *sqlHelper= [[SQLHelper alloc] init];
NSString *dbpath = [sqlHelper getDBPath];
[sqlHelper release];
sqlite3_stmt *selectStmt;
NSString *selectFBQuery=[NSString stringWithFormat:@"SELECT * from SocialFeeds where feedsSource='LondonFB'"];
NSLog(@"%@",selectFBQuery);
if(sqlite3_open([dbpath UTF8String], &database) == SQLITE_OK) {
const char *sql = [selectFBQuery UTF8String];
if(sqlite3_prepare_v2(database, sql, -1, &selectStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating select statement. '%s'",
sqlite3_errmsg(database));
self.fbPostArray=[[[NSMutableArray alloc] init] autorelease];
while(sqlite3_step(selectStmt) == SQLITE_ROW)
{
FaceBook *fb=[[FaceBook alloc] init];
fb.postTitle=[[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectStmt, 0)] autorelease];
fb.postdate=[[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectStmt, 1)] autorelease];
fb.link=[[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectStmt, 2)] autorelease];
[self.fbPostArray addObject:fb];
[fb release];
}
sqlite3_finalize(selectStmt);
}
[pool drain];
}
機器からのリークのスクリーンショットを添付しています