Как выпустить UITabBarController со всеми его контроллерами представления? - PullRequest
0 голосов
/ 15 сентября 2011

Я программно создаю панель вкладок с двумя контроллерами представления, как показано в следующем коде.Мне трудно очистить память, когда мне больше не нужна панель вкладок.Документация Apple очень ограничена в выпуске контроллера панели вкладок.Я не знаю, как освободить все контроллеры представления в массиве 'viewControllers'.Я попытался распечатать счет сохранения и обнаружил, что x & y retainCount достигает 5.

@interface X:UIViewController
@interface Y:UIViewController

@interface Z: UIViewController {
  UITabBarController *tabBar; 
}
@end

@implementation Z
-(IBAction)openTabBarUp{
  UITabBarController *tabBar = [[UITabBarController alloc] init];

  X *x = [[X alloc] init];
  Y *y = [[Y alloc] init];

  tabBar.viewControllers = [NSArray arrayWithObjects: x, y, nil];
  [self.view addSubView: tabBar.view];

}

. Вот как я пытаюсь освободить память:

-(IBAction)removeTabBar{
  [tabBar.view removeFromSuperView];
  [tabBar release];
  tabBar = nil;
}

Спасибо1007 *

Лев

1 Ответ

1 голос
/ 15 сентября 2011
-(IBAction)openTabBarUp{
  tabBar = [[UITabBarController alloc] init];

  X *x = [[X alloc] init];
  Y *y = [[Y alloc] init];

  tabBar.viewControllers = [NSArray arrayWithObjects: x, y, nil];
  [self.view addSubView: tabBar.view];

}

Вам нужно UITabBarController *tabBar = [[UITabBarController alloc] init]; в методе openTabBarUp, так как у вас уже есть экземпляр, объявленный в заголовочном файле. Вы можете освободить tabBar, используя [tabBar release];, но Apple настаивает на добавлении tabBarController в качестве корневого вида вашего главного окна, а не в качестве части какого-либо контроллера представления.

UPDATE

Справочные документы Apple о UITabBarController состояниях

При развертывании интерфейса панели вкладок вы должны установить это представление как корень вашего окна. В отличие от других контроллеров представления, панель вкладок интерфейс никогда не должен быть установлен как дочерний элемент другого представления контроллер.

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