Когда pushViewController: освобожденный указатель не был выделен - PullRequest
0 голосов
/ 15 апреля 2011

Я не могу найти проблему!Любая помощь по этому вопросу будет высоко оценена: из UITableView я выдвигаю новое представление, содержащее представление с UIwebView для доступа в Интернет.При нажатии кнопки «Назад» я получаю следующую ошибку: malloc: * ошибка для объекта 0x3d438: освобожденный указатель не выделен.Однако, когда я комментирую последнюю строку (когда выпущен dvController) все работает нормально !!!

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [self setCellIdxPathSelected:indexPath];

    NSString *selectedID = [[theList objectAtIndex:indexPath.row] theWebID]; 

    ExternalWebView *dvController = [[ExternalWebView alloc] initWithNibName:@"ExternalWebView" bundle:nil];

    dvController.hidesBottomBarWhenPushed= YES;
    dvController.theWebID= selectedID;

    NSLog(@"El ID: %@", selectedID);

    [self.navigationController pushViewController:dvController animated:YES];

    [dvController release]; // ERROR !!!
}

1 Ответ

0 голосов
/ 16 апреля 2011

Попробуйте создать dvController с autorelease:

ExternalWebView *dvController = [[[ExternalWebView alloc] 
       initWithNibName:@"ExternalWebView" bundle:nil] autorelease];

и затем удалите оператор [dvController release].

Подтверждение того, что вы не производите утечку, придет, если вы запустите инструменты с помощью инструмента «Утечки» и убедитесь, что у вас нет утечки dvController.

Я догадываюсь, что ваш контроллер освобождается другим объектом, который каким-то образом стал вашим подвидом. Я видел такое поведение раньше в другой ситуации.

Конечно, если вышеуказанные изменения также приводят к сбою, возникает более глубокая проблема, и я думаю, что нам понадобится немного больше информации о ExternalWebView.

...