【问题标题】:Why I can't release the navigation controller of the view I added to the window为什么我无法释放我添加到窗口的视图的导航控制器
【发布时间】:2012-01-02 07:39:12
【问题描述】:
- (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)

【问题讨论】:

    标签: iphone objective-c memory-management uinavigationcontroller addsubview


    【解决方案1】:

    -addSubview: 保留视图,而不是视图控制器

    您可以使用UIWindowrootViewController 属性(iOS 4 及更高版本)来保留视图控制器,它还可以节省您自己将视图添加为子视图。

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

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多