2

我正在使用 addSubView 方法添加视图。viewWillDisappear 是否有任何替代方法?viewWillDisappear 没有触发。我想在当前视图消失时释放所有分配的对象。目前我正在使用 dealloc 方法来做到这一点。但是 dealloc 方法不会很快触发。由于我收到内存警告,有时我的应用程序可能会自行崩溃。主要问题是语音文件。

4

3 回答 3

1

addSubview/removeFromSuperview(这些方法与视图相关,而不是视图控制器)不调用 viewWillAppear/viewWillDisappear 方法。您应该在 dealloc() 本身中编写发布目标代码。
removeFromSuperview 应该调用 dealloc()。

于 2011-09-02T06:22:23.103 回答
0

在 viewDidUnload/viewDidDisappear 中释放对象并在 dealloc 中设置为 nil

这可能有效,但您肯定应该看看为什么 viewWillDisappear 没有被调用。

于 2011-09-02T06:12:58.127 回答
0

您可以尝试release方法中的对象viewDidDisappear。然后你就不会等待触发方法dealloc

同样在方法中viewDidDisappear,您可以尝试从超级视图中删除所有子视图(这将调用viewWillDisappear所有子视图):

NSArray *subviews = [self.view subviews];
for (UIView *view in subviews)
    [view removeFromSuperview];
于 2011-09-02T06:04:52.903 回答