этот метод не называется я не знаю
почему, если он не называется, я получу память
вопросы
Когда точно вызывается dealloc
(т. Е. Когда объект освобождается), это не должно иметь для вас никакого значения. Важно то, что вы объединяете каждую alloc
с release
/ autorelease
. Что вы, вероятно, не делаете.
Приведенный выше код не очень хорошо читается и выглядит немного "Java" -ish. Ваш метод get на самом деле ничего не возвращает, что выглядит странно. Но в любом случае вы бы не назвали метод "get___".
Вы, вероятно, теряете память в методе getDoctorsListController
в этой строке:
doctorListViewNavigationController=[[UINavigationController alloc]initWithRootViewController:doctorListViewController];
Так как вы не определили doctorListViewNavigationController
в этом методе, и я предполагаю, что вы разместили код, который компилируется, это либо член (хотя и не обязательно свойство) вашего класса, либо где-то статическая переменная. Это означает, что он уже может указывать на объект. Это означает, что когда вы назначаете новый alloc
'ed объект, старый теряется (протекает).
Вот как вы должны рефакторинг.
- (void)doctorsListAction
{
if (isFirst == YES)
{
[self showDoctorsList];
}
}
- (void)showDoctorsList
{
DoctorListViewController* doctorListViewController = [[DoctorListViewController alloc] initWithNibName:nil bundle:nil];
doctorListViewController.doctorList = doctorList;
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:doctorListViewController];
navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
[self.navigationController presentModalViewController:navController animated:YES];
[navController release];
[doctorListViewController release];
}