9

Bellek yönetimi iPhone'da çok önemli bir konudur. Bu yüzden çok genel bir soru soruyorum. Başka bir sınıfın viewController öğesini çağırmanın iki yolu vardır.Görüntü denetleyicisine nasıl basılır (denetleyici denetleyicisi)?

Yolu 1:

AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil] autorelease]; 

[self.navigationController pushViewController:viewController animated:YES]; 

Yolu 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 

Yani açık bir soru diğer sınıfın viewController çağırmak için en iyi yolu olan nedir? Way1 veya Way2?

Öneriler ve yorumlar açıkça davet edildi.

Lütfen yorum yapın ve oy verin.

cevap

7

Yol 1 daha basittir.

Yol 2, ilk denetleyicinin itilmiş görüntü denetleyicisine bir referans tutmasını sağlar. Bu referansa ihtiyacınız varsa, bu yararlı olacaktır.

Burada net bir cevap yok. İhtiyaçlarınıza göre değişir. Genel kural, tabi ki, kodu mümkün olduğunca basit hale getirmek, ancak daha basit değildir.

19

Hmm ... basit tutabilmek için, neden sadece:

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

[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 
İlgili konular