Я разрабатываю приложение, в котором я работаю с базой данных. Метод, который я написал в классе базы данных следующим образом.
-(NSMutableArray *)getData: (NSString *)dbPath{
NSMutableArray *dataArray = [[NSMutableArray alloc] init];
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK){
NSString *sqlQuery = [NSString stringWithFormat:@"SELECT empID, addText FROM Employee WHERE nameID = %@", nameID];
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &selectstmt, NULL) == SQLITE_OK){
while (sqlite3_step(selectstmt) == SQLITE_ROW){
[dataArray addObject:[[NSMutableDictionary alloc] init]];
[[dataArray lastObject] setObject:[NSString
stringWithFormat:@"%d", sqlite3_column_int(selectstmt, 0)] forKey:@"empID"];
[[dataArray lastObject] setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,1)] forKey:@"addText"];
}
}
sqlite3_finalize(selectstmt);
}
sqlite3_close(database);
return dataArray;
}
Приведенный выше код прекрасно работает на симуляторе, но не может работать на устройстве.
Я также отслеживал утечки памяти, в которых я обнаружил утечку памяти в приведенном выше коде метода. Но я не могу решить эту утечку памяти.
Теперь я также обнаружил утечку памяти следующим способом.
- (id) initWithString: (NSString *) str атрибуты: (NSDictionary *) атрибуты
{
if ((self = [super init]))
{
_buffer = [str mutableCopy];
_attributes = [NSMutableArray arrayWithObjects: [ZAttributeRun attributeRunWithIndex: 0 атрибуты: атрибуты], ноль];
}
вернуть себя;
}
Утечка рядом с _buffer = [str mutableCopy] ;. И след утечки дает мне в выходной непрерывно увеличивающееся выделение строки NSCFString. Как я поддерживаю это?
Заранее спасибо.