Проблема с выпуском NSMutableDictionary - PullRequest
0 голосов
/ 04 апреля 2009

, когда я пытаюсь выпустить словарь, я получаю исключение.

Вот мой код:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (!tableDataDictionary)
{
    DebugLog(@"initializing tableDataDictionary");
    tableDataDictionary = [ [NSMutableDictionary alloc] init];
}
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [mainTableView deselectRowAtIndexPath: [mainTableView indexPathForSelectedRow] animated:NO];

    [tableDataDictionary release];
}

Как я могу это исправить?

1 Ответ

5 голосов
/ 04 апреля 2009

Скорее всего, вам нужно обнулить переменную экземпляра tableDataDictionary. В противном случае при первом запуске каждого из этих методов он будет работать нормально, но во второй раз tableDataDictionary не будет иметь значение nil и будет указывать на указатель dealloc'd; таким образом, вызов alloc не будет выполнен, и при вызове viewWillDisappear: он попытается снова освободить этот указатель. Итак, чтобы исправить это:

<pre> -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [mainTableView deselectRowAtIndexPath: [mainTableView indexPathForSelectedRow] animated:NO];</p> <pre><code>[tableDataDictionary release]; tableDataDictionary = nil;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...