【发布时间】:2011-12-02 07:33:46
【问题描述】:
我正在开发一个应用程序。在那个应用程序中,我使用一个数组来返回一个函数中的值数组,以从数据库中获取数据。并为该函数分配内存并使用自动释放。但这在当时被杀死了执行该行。当 iam 释放时,dealloc 函数应用程序中的那个将崩溃。如果您不使用自动释放和释放,则会发生内存泄漏。该函数的示例如下。
-(NSMutableArray*)getWeeklyTableInfo:(int)month:(int)week
{
NSString *query = [NSString stringWithFormat:@"SELECT * FROM CalendarEvents where Mont=%d and Week=%d ",month,week];
sqlite3_stmt *stStatement;
EventsArray1 = [[NSMutableArray alloc]init];
if(sqlite3_prepare_v2(database, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
while (sqlite3_step(stStatement)==SQLITE_ROW) {
databasefields = [[DataBaseFields alloc]init];
databasefields.DBSno=sqlite3_column_int(stStatement, 0);
databasefields.DBdate =[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 1)];
databasefields.DByear=sqlite3_column_int(stStatement, 2);
databasefields.DBmonth=sqlite3_column_int(stStatement, 3);
databasefields.DBweek=sqlite3_column_int(stStatement, 4);
databasefields.DBtitle = [NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 5)];
databasefields.DBlocation = [NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 6)];
databasefields.DBtime = [NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 7)];
databasefields.DBrepeat=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 8)];
databasefields.DBalert=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 9)];
databasefields.DBnotes=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 10)];
databasefields.DBaudio=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 12)];
databasefields.DBpicture=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 11)];
databasefields.DBPhoneNO=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 13)];
databasefields.DBMailID=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 14)];
[EventsArray1 addObject:databasefields];
[databasefields release];
}
if (stStatement!= nil) {
sqlite3_finalize(stStatement);
}
}
sqlite3_close(database);
return EventsArray1;
}
所以请告诉我该怎么做。
【问题讨论】:
标签: iphone