0

既にテーブルに保存した 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];
}

機器からのリークのスクリーンショットを添付しています リーク画像

4

0 に答える 0