9

メモリ管理はiPhoneで非常に重要な問題です。だから私は非常に一般的な質問をしています。 別のクラスのviewControllerを呼び出すには2通りの方法があります。viewcontroller(ビューコントローラ)をプッシュする方法は?

ウェイ1:

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

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

ウェイ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 

だから、明白な疑問は、他のクラスのViewControllerをを呼び出すための最良の方法である、ありますか? Way1またはWay2?

提案とコメントは公開されています。

コメントして投票してください。

答えて

7

ウェイ1は簡単です。

ウェイ2では、最初のコントローラは、プッシュされたビューコントローラへの参照を保持します。その参照が必要な場合は、これが便利です。

明確な答えはありません。それはあなたのニーズに依存します。もちろん、一般的なルールは、コードをできるだけシンプルにすることですが、シンプルではありません。

19

うーん...物事をシンプルに保つために、なぜだけでなく:

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

[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 
関連する問題