9

메모리 관리는 iPhone에서 매우 중요한 문제입니다. 그래서 저는 매우 일반적인 질문을하고 있습니다. 다른 클래스의 viewController를 호출하는 두 가지 방법이 있습니다.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]; 
관련 문제