9

La gestion de la mémoire est un problème très important sur iPhone. Je pose donc une question très générale. Il y a deux façons d'appeler un viewController d'une autre classe.Comment appuyer sur le viewcontroller (voir le contrôleur)?

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 

La question évidente est, ce qui est la meilleure façon d'appeler la viewController d'autres classes? Way1 ou Way2?

Suggestions et commentaires sont ouvertement invités.

Veuillez commenter et voter.

Répondre

7

Way 1 est plus simple.

Way 2 permet au premier contrôleur de conserver une référence au contrôleur de vue poussé. Si vous avez besoin de cette référence, ce serait utile.

Il n'y a pas de réponse claire ici. Cela dépend de vos besoins. La règle générale, bien sûr, est de rendre le code aussi simple que possible, mais pas plus simple.

19

Hmm ... Pour garder les choses simples, pourquoi pas seulement:

MyViewController* viewController = [[MyViewController alloc] init]; 

[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 
Questions connexes