-(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,如何在函数返回之前释放它?
答案 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对象。