Когда я перемещаюсь по строке щелчка, я нажимаю poinofinterestview, но когда я нажимаю назад, происходит сбой приложения. но если я прокомментирую [релиз nextControllerp]; работает или 5 или 6 раз потом вылетает
(void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[TableView deselectRowAtIndexPath:indexPath animated:YES];
PointOfInterest *nextControllerp=[[PointOfInterest alloc] initWithNibName:@"PointOfInterest" bundle:nil];
if([LocationList count]!=0 && [LocationListId count]!=0)
{
nextControllerp.locName=[LocationList objectAtIndex:indexPath.row];
nextControllerp.LocationId=[LocationListId objectAtIndex:indexPath.row];
[self.navigationController pushViewController:nextControllerp animated:YES];
}
[nextControllerp release];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem=backButton;
[backButton release];
}
1 ответ
Я заметил одну вещь: ваш код иногда создает объект PointOfInterest
, а затем выпускает его, ничего с ним не делая. Переместите создание/выпуск в блок if
.
Кроме того, вы используете правильную идиому для добавления нового контроллера в навигационный контроллер, т. е. инициализируете контроллер, вставляете его в навигационный контроллер, а затем немедленно вызываете релиз.
Я считаю, что ваш сбой вызван чем-то, что не показано в опубликованном вами коде. Тот факт, что закомментирование строки release
приводит к меньшему количеству сбоев, может указывать на то, что какой-то код все еще пытается получить доступ к вашему новому контроллеру представления после того, как он был удален из стека навигации (потому что обычно в момент увольнения это было бы освобожден и освобожден).
Просто из любопытства, влияет ли удаление фрагмента кода, который устанавливает элемент кнопки «Назад», на сбой? Пытаюсь закомментировать последние три строки.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].