如何推出视图控制器(View Controller)?

9
内存管理在iPhone中非常重要。因此,我有一个非常普遍的问题。调用另一个类的viewController有两种方法。
方法1:
AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil] autorelease];

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

第二种方法:

    #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?
欢迎提出建议和评论。
请留下您的评论和投票。
2个回答

19

嗯...为了保持简单,为什么不这样做:

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

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

7

第一种方式更简单。

第二种方式允许第一个控制器保留对推送视图控制器的引用。如果您需要该引用,则此方法将很有用。

这里没有明确的答案。这取决于您的需求。当然,通常的规则是尽可能使代码简单,但不要过于简单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接