9

Zarządzanie pamięcią to bardzo ważna sprawa w iPhonie. Dlatego zadaję bardzo ogólne pytanie. Istnieją dwa sposoby wywoływania kontrolki viewController innej klasy.Jak push viewcontroller (kontroler widoku)?

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 

więc oczywiste pytanie, co jest najlepszym sposobem, aby wywołać viewController z innej klasy? Way1 lub Way2?

Propozycje i komentarze są otwarte.

Prosimy o komentarz i głosowanie.

Odpowiedz

7

Droga 1 jest prostsza.

Sposób 2 pozwala pierwszemu kontrolerowi zachować odniesienie do kontrolera widoku pchanego. Jeśli potrzebujesz tego odniesienia, byłoby to przydatne.

Nie ma jednoznacznej odpowiedzi tutaj. To zależy od twoich potrzeb. Ogólną zasadą jest oczywiście uczynienie kodu tak prostym, jak to tylko możliwe, ale prostszym.

19

Hmm ... Aby zachować rzeczy proste, to dlaczego nie po prostu:

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

[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 
Powiązane problemy