Como empurrar viewcontroller (controlador de vista)?
-
10-07-2019 - |
Pergunta
O gerenciamento de memória é uma questão muito importante no iPhone. Então, eu estou fazendo uma pergunta muito geral. Há duas maneiras de chamar um a viewController de outra classe.
Way 1:
AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
Way 2:
#import "AnotherClassViewController.h"
@interface ThisClassViewController : UIViewController{
AnotherClassViewController *myViewController;
}
@property (nonatomic, retain) AnotherClassViewController *myViewController;
@end
@implementation ThisClassViewController
@synthesize myViewController;
- (void) pushAnotherViewController{
if(self.myViewController == nil){
AnotherClassViewController *tempViewController = [[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil];
self.myViewController = tempViewController;
[tempViewController release];
}
[self.navigationController pushViewController:myViewController animated:YES];
}
- (void)dealloc{
self.myViewController = nil;
}
@end
Assim, a pergunta óbvia é: qual é a melhor maneira de chamar a viewController de outra classe? WAY1 ou Way2?
Sugestões e comentários são abertamente convidou.
Por favor, comentar e votar.
Solução
Way 1 é mais simples.
Way 2 permite que o primeiro controlador de manter uma referência para o controlador de vista empurrado. Se você precisa que a referência, então isso seria útil.
Não há uma resposta clara aqui. Ela depende de suas necessidades. A regra geral, é claro, é para tornar o código mais simples possível, mas não mais simples.
Outras dicas
Hmm ... Para manter as coisas simples, porque não basta:
MyViewController* viewController = [[MyViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];