2011-09-02 45 views
2

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

+0

你认为viewWillDisappear应该被调用,为什么?您是否通过导航控制器,标签栏控制器,以模态方式呈现另一个视图控制器或执行其他操作,从视图控制器导航? –

回答

0

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

的方法 viewDidDisappear你可以尝试从上海华删除所有子视图(将调用 viewWillDisappear所有子视图)

另外:

NSArray *subviews = [self.view subviews]; 
for (UIView *view in subviews) 
    [view removeFromSuperview]; 
+0

因为我使用addSubView viewDidDisappear,所以viewWillDisappear将不起作用。我做了这个使用代码:[myViewController viewWillAppear:YES]; –

+0

即使你对该视图的调用方法'removeFromSuperview' ??? – Nekto

0

释放viewDidUnload/viewDidDisappear对象和dealloc的设置为nil

这可能工作,但你一定要看看为什么viewWillDisappear没有被调用。

+0

释放你设置为零的“对象”没有意义,因为它们不是对象,它们是指向零的对象,并且你不能释放零。 –

+1

@fichek你是对的,我的错误 –

+1

这样更好:) –

1

addSubview/removeFromSuperview(这些方法与视图不是视图控制器有关)不调用viewWillAppear/viewWillDisappear方法。您应该在dealloc()本身中编写发行对象代码。
removeFromSuperview应该调用dealloc()。

+0

GOT IT WORKED !!! –

+0

当视图动画开始时,通过手动发送此消息给VC来修复它。 代码: [myViewController viewWillAppear:YES]; –

+1

是的,有些时候需要手动调用这些函数。 – Mahesh