内存管理是iPhone中非常重要的问题。所以我问一个非常普遍的问题。 有两种方法可以调用另一个类的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?
公开邀请建议和意见。
请评论并投票。
答案 0 :(得分:19)
嗯......为了简单起见,为什么不呢:
MyViewController* viewController = [[MyViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
答案 1 :(得分:7)
方式1更简单。
方式2让第一个控制器保持对推入的视图控制器的引用。如果你需要那个参考,那么这将是有用的。
这里没有明确的答案。这取决于您的需求。当然,一般规则是使代码尽可能简单,但不是更简单。