Мне не удалось найти решение моей проблемы в подобных вопросах. Я извлекаю целую кучу данных из базы данных sqlite с помощью оболочки fmdb. У меня есть метод в моем служебном классе fmdb, подобный этому:
- (NSMutableArray *) getConnectionsForKey: (NSString *) key
{
NSString *query = [NSString stringWithFormat:@"select * from user" ];
FMResultSet *results = [database executeQuery:query];
NSMutableArray *retArray = [[ NSMutableArray alloc ] init ];
while ([ results next ]) {
NSString *fname = [ results stringForColumn:@"firstname" ];
NSString *lname = [ results stringForColumn:@"lastname" ];
NSMutableDictionary *aDictionary = [[ NSMutableDictionary alloc ]
init
];
[ aDictionary
setObject:fname
forKey:@"firstname"
];
[ aDictionary
setObject:lname
forKey:@"lastname"
];
[ retArray addObject:aDictionary ];
[ aDictionary release ];
}
[ results close ];
return retArray;
}
Это хранит мою информацию в массиве словарей. В моем контроллере представления я вызываю свой метод следующим образом:
-(void) setCurrentConnections: (NSString *) key {
if ( currentConnections != nil ) {
[ currentConnections removeAllObjects ];
}
LocalDatabase *db = [[ LocalDatabase alloc ] init ];
[ db openDatabase ];
currentConnections = [ db getConnectionsForKey:key ];
[ db closeDatabase ];
[ db release ];
}
Теперь каждый раз, когда я вызываю этот метод для обновления массива новыми контактами, у меня возникает постоянная утечка, которая продолжает накапливаться, как я наблюдаю с помощью инструмента выделения. Это происходит, даже когда я освобождаю currentConnections сразу после загрузки из базы данных и никогда больше не вызываю этот метод, поэтому я подозреваю, что это что-то с реализацией базы данных. Кто-нибудь еще занимался этой проблемой?