【发布时间】:2010-07-30 07:32:04
【问题描述】:
我有以下导致内存泄漏的代码
-(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) {
char *fieldFlag=(char *) sqlite3_column_text(statement, 0);
fieldFlagI=[[NSString alloc] initWithUTF8String:fieldFlag];
//fieldFlagI=[NSString initWithUTF8String:fieldFlag];
}
sqlite3_finalize(statement);
}
//NSString *ffI=fieldFlagI;
//[fieldFlagI release]
return [fieldFlagI];
}
检查苹果文档后,我将代码更改为返回 [fieldFlagI autorelease];
在我调用这个函数的代码段中
NSString *getRecord=[dbase getSingRecord:flag];
如果我执行 [getRecord release]; - 应用程序崩溃 - 我如何释放这个对象?
【问题讨论】:
标签: iphone objective-c cocoa-touch memory-management