【问题标题】:Is there a way to force a UIView to release a subview?有没有办法强制 UIView 释放子视图?
【发布时间】:2010-11-29 15:20:23
【问题描述】:

假设我将 UIViewController 传递给 UINavigationController,如下所示:

SettingsViewController *settingsRootView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    SettingsNavigationController *settingsView = [[SettingsNavigationController alloc] initWithRootViewController:settingsRootView];   
    [settingsRootView release]; 
    [self presentModalViewController:settingsView animated:YES];
    [settingsView release];

我在原始 UIViewController settingsRootView 上释放了我的保留,但 settingsView 保留了它。当我解雇settingsView 时,它应该释放自己和它的所有孩子,但由于某种原因它不是。有没有办法告诉我的主应用程序视图已使用settingsView 来强制我的主视图释放settingsView 及其所有子视图?

【问题讨论】:

    标签: ios objective-c memory-management retain


    【解决方案1】:

    要强制您的 settingsView 释放它正在管理的任何控制器,请调用 settingsView.viewControllers = nil。

    但这应该在 settingsView 被释放时自动发生。在你的 settingsView 的 dealloc 方法中放置一个断点以确保它被释放。确保 dealloc 正在调用 [super dealloc]。

    【讨论】:

    • 我已经确认正在调用 dealloc。也许这是我的子类实现。
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2011-09-24
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多