内存泄漏导致alloc,如何在函数返回之前释放变量

时间:2011-09-17 11:38:29

标签: iphone objective-c memory-leaks

-(NSString *) getSingRecord: (NSString *) getStatement{

    NSString *sql=getStatement;

    sqlite3_stmt *statement;

    NSString *fieldFlagI=@"0";

    if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
        //while (sqlite3_step(statement) == SQLITE_ROW) {
        if(sqlite3_step(statement) == SQLITE_ROW) {
            char *fieldFlag=(char *) sqlite3_column_text(statement, 0);
            fieldFlagI=[[NSString alloc] initWithUTF8String:fieldFlag];
        }
        sqlite3_finalize(statement);
        statement=nil;
    }
    return fieldFlagI;
}

fieldFlagI有内存泄漏导致我使用alloc,如何在函数返回之前释放它?

4 个答案:

答案 0 :(得分:4)

只需使用

fieldFlagI=[NSString stringWithFormat:@"%s",fieldFlag];

这样您就不会致电alloc,也不需要致电release

答案 1 :(得分:2)

添加自动释放:

fieldFlagI=[[[NSString alloc] initWithUTF8String:fieldFlag] autorelease];

请务必阅读Apple的内存管理编程指南,或至少一些关于目标C内存管理的教程。

答案 2 :(得分:0)

您只需要autorelease

答案 3 :(得分:0)

使用stringWithUTF8String。此方法将返回autorelease对象。