Почему я не могу освободить навигационный контроллер вида, который я добавил в окно - PullRequest
0 голосов
/ 20 ноября 2011
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setWindow:[[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]];

    // Override point for customization after application launch.
    //self.window.backgroundColor = [UIColor whiteColor];

    // Create First view
    FirstViewController *firstViewCTL = [[FirstViewController alloc] init];

    // Create UINavigationController
    UINavigationController *navCTL = [[UINavigationController alloc] init];
    [[navCTL navigationBar] setBarStyle:UIBarStyleBlack];
    [navCTL pushViewController:firstViewCTL animated:NO];
    [firstViewCTL release];

    [[self window] addSubview:navCTL.view];
    [navCTL release];
    [[self window] makeKeyAndVisible];
    return YES;
}

Я понимаю, что добавление подпредставления (addSubview :) сохранит представление, подлежащее добавлению.Но почему я не могу сейчас выпустить свой навигационный контроллер (navCTL), которому принадлежат уже сохраненные представления

1 Ответ

2 голосов
/ 20 ноября 2011

-addSubview: сохраняет представление , а не представление контроллер .

Вы можете использовать свойство UIWindow rootViewController (iOS 4 и выше), чтобы сохранить контроллер представления, он также сохраняет вас, добавляя представление как подпредставление самостоятельно.

...
[window setRootViewController:navCTL];
[navCTL release];
...
...