Несмотря на то, что я не уверен, что означает «самый эффективный» в вашем контексте, я попытаюсь объяснить 3. объяснением того, что я обычно делаю, когда речь идет о типичных приложениях с вкладками:
Я не пойду с примером проекта, потому что во всем этом IB есть так много магии (и у меня был трудный опыт в попытке объединить контроллеры панели вкладок и контроллеры навигации).
Я просто создал простой проект, избавился от всего, что связано с IB, и сделал что-то подобное в делегате приложения:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSMutableArray *cons = [[NSMutableArray alloc ]init];
viewController = [[UITabBarController alloc] init];
int i = 0;
UIViewController *firstController = [[SomeViewViewControllerClazz alloc] init];
firstController = [[UITabBarItem alloc]initWithTitle:@"Een" image:nil tag:i];
[cons addObject:firstController];
[firstController release];
i++;
UIViewController *secondController = [[AnotherViewControllerClazz alloc] init];
secondController = [[UITabBarItem alloc]initWithTitle:@"Twej" image:nil tag:i];
[cons addObject:secondController];
[secondController release];
i++;
UIViewController *thirdController = [[WhateverViewControllerClazz alloc] init];
thirdController = [[UITabBarItem alloc]initWithTitle:@"Drej" image:nil tag:i];
[cons addObject:thirdController];
[thirdController release];
i++;
viewController.viewControllers = cons;
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
Таким образом, я имею максимальную свободу делать все, что захочу с контроллерами, но также обладаю встроенной мощью вкладок.
1 .: Таким образом, у меня никогда не было проблем с памятью, хотя я загружал контроллеры в самом начале.
2 .: Если идея с вкладками подходит вашему приложению, используйте ее, как это предусмотрено в iOs.