Я пытаюсь исправить ошибку EXC_BAD_ACCESS, которая выдается, когда я получаю доступ к NSMutableDictionary в tableView: cellForRowAtIndexPath: indexPath.Прямо сейчас это работает, когда я заполняю ridesDict методом loadHistoryFromDBExtended следующим образом:
self.ridesDict = [self loadHistoryFromDBExtended];
NSLog(@"rides dict %@", self.ridesDict);
Однако я не хочу вызывать [self loadHistoryFromDBExtended] для каждой загружаемой ячейки, так как словарь не будет изменятьсяЯ попытался переместить:
self.ridesDict = [self loadHistoryFromDBExtended];
в viewDidLoad, и теперь я получаю ошибку EXC_BAD_ACCESS при использовании:
NSLog(@"rides dict %@", self.ridesDict);
в tableView: cellForRowAtIndexPath: indexPath.Из того, что я прочитал, кажется, что у меня есть некоторые проблемы с сохранением / выпуском памяти, но я не могу понять это.Я попытался [self.ridesDict retain] в viewDidLoad после вызова метода loadHistoryFromDBExtended, но это не помогло.Я очень новичок в этом, поэтому я был бы признателен за любые указания относительно того, куда идти.
Редактировать: вот метод loadHistoryFromDBExtended:
-(NSMutableDictionary *)loadHistoryFromDBExtended
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
FMDatabase* db = [FMDatabase databaseWithPath:[self getDBPath]];
if (![db open])
{
NSLog(@"Could not open db.");
[pool release];
}
//get users
FMResultSet *rs = [db executeQuery:@"SELECT * FROM R order by date desc"]; //query provides result set
//create result array
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
while ([rs next])
{
NSMutableArray *usersDictArray = [NSMutableArray array];
//look up names for id's
[usersDictArray addObject:[rs stringForColumn:@"rNames"]];
[usersDictArray addObject:[rs stringForColumn:@"dName"]];
[usersDictArray addObject:[rs stringForColumn:@"date"]];
[myDictionary setObject:usersDictArray forKey:[rs stringForColumn:@"rID"]];
[usersDictArray release];
}
//return usersArray;
return myDictionary;
[myDictionary release];
[pool drain];
}