2012-01-25 4 views
0

Xcode 4.2 및 최신 SDK를 사용하여 iPhone 및 iPad 어플리케이션을 개발 중입니다.나에 의해 생성 된 오브젝트 공개하기

나는 ARC를 사용하지 않고 탭 응용 프로그램을 작성하고 난 AppDelegate에이를 발견했습니다

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    UIViewController *viewController1, *viewController2; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease]; 
     viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease]; 
    } else { 
     viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil] autorelease]; 
     viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil] autorelease]; 
    } 
    self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

내가 viewController1viewController2을 해제해야 할 수 있습니까?

+2

아니요, 'autorelease' 메시지가 전송 되었기 때문에 없습니다. –

+0

다른 사람들은 당신이보기 컨트롤러에 보낸'autorelease'에 대해서 언급했습니다. 언급 할 가치가있는 또 다른 것은'arrayWithObjects'가 그 내용을 유지하기는하지만, autoreleased 상태 자체에서 반환된다는 것입니다. 그래서'tabBar'의 retain은 파괴로부터 그것을 지키는 유일한 것입니다. 귀하의보기 컨트롤러를 공개하는 방법은 다음과 같습니다 : tabBarController -> 컨트롤러의 NSArray ->보기 컨트롤러. – dasblinkenlight

답변

4

발신 autorelease은 나중에 release 메시지를 보냅니다. 그래서 걱정할 것이 없습니다. 그들은 풀려날 것입니다.

3

번호는 그들은 오토 릴리즈를 전송됩니다, 그래서 그들은 당신이 코딩을 발표 할 필요가 없습니다.

0

단지 각 runLoop의 끝에서 배출되는 현재 NSAutoreleasePool에 추가 autorelease 보내기. 따라서 release을 사용하여 추가로 해제 할 필요가 없습니다.

팁 :가 있다면 매우 큰 객체 (또는 루프에서 만든 예를 들어 많은 개체) 당신이 정말로 즉각적인 효과 및 메모리 풋 프린트를 감소 해제 전화 메모리를 할당 해제 즉시 해제합니다.

관련 문제