обычно, когда я использую viewcontroller, который будет выталкивать текущий viewcontroller из пути, я использую UINavigationController и помещаю / извлекаю новые viewcontrollers и позволяю им обрабатывать все dealloc самостоятельно.
Однако, например, в этом случае у меня есть MainViewController, который является представлением по умолчанию при запуске приложения. У меня есть второе представление, называемое SecondaryViewController, всплывающее окно на главном экране (вроде лайтбокса).
Вот код для иллюстрации:
//From within mainViewController:
secondaryViewController = [SecondaryViewController alloc] initWithNibName:@"SecondaryViewController" bundle:nil];
[self.view addSubview:secondaryViewController.view];
Интерфейс secondViewController выглядит следующим образом:
//interface
@interface SecondaryViewController : UIViewController
{
IBOutlet UILabel *httpLabel;
IBOutlet UIScrollView *scrollView;
}
@property(retain, nonatomic) IBOutlet UILabel *httpLabel;
@property(retain, nonatomic) IBOutlet UIScrollView *scrollView;
Что касается реализации, у меня есть @synthesize
для @property
ivars, но я не делаю никаких ручных распределений. Однако я применил метод dealloc:
- (void)dealloc
{
[httpLabel release];
[scrollView release];
[super dealloc];
}
Но я не уверен, что мне нужно выше.
Так что мои вопросы будут следующими:
1) Нужен ли вышеуказанный метод dealloc в этом случае? Или, вообще, когда подпредставлению понадобится метод dealloc?
2) Если мне это нужно или не нужно, зависит ли это от того, добавляю ли я дополнительныйViewController через addSubview или pushViewController? Например, если я хочу заменить весь mainViewController следующим образом:
[self.navigationController pushViewController:secondaryViewController animated:NO]
Нужен ли вторичному контроллеру элемент метода dealloc?
Спасибо!