ViewController (View Controller)를 푸시하는 방법?
-
10-07-2019 - |
문제
메모리 관리는 iPhone에서 매우 중요한 문제입니다. 그래서 나는 매우 일반적인 질문을하고 있습니다. 다른 클래스의 ViewController를 호출하는 두 가지 방법이 있습니다.
방법 1 :
AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
2 : 웨이 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?
제안과 의견이 공개적으로 초대됩니다.
의견을 제시하고 투표하십시오.
해결책
방법 1은 더 간단합니다.
웨이 2를 사용하면 첫 번째 컨트롤러가 푸시 뷰 컨트롤러에 대한 참조를 유지할 수 있습니다. 그 참조가 필요하면 유용 할 것입니다.
여기에는 명확한 대답이 없습니다. 그것은 당신의 필요에 따라 다릅니다. 물론 일반적인 규칙은 코드를 가능한 한 간단하게 만드는 것입니다.
다른 팁
흠 ... 물건을 단순하게 유지하려면 왜 그런지
MyViewController* viewController = [[MyViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
제휴하지 않습니다 StackOverflow