【发布时间】:2011-06-09 18:15:35
【问题描述】:
我知道当对象的保留计数达到零时会调用 dealloc,并且应该在其中释放 iVar,但我想知道它是否也是删除临时文件或关闭数据库连接的合适位置。
具体来说,我有一个 UIViewController 的子类,它在 -viewDidLoad 中创建一个数据库连接,并且通过用户交互,可以创建临时文件。当上述控制器从导航堆栈中弹出时,我想关闭数据库连接并删除临时文件(如果存在)。我应该在 dealloc 中这样做吗?
我的第一个想法是在 -viewDidUnload 中清理这个数据库和文件,但我现在知道这个方法只有在操作系统发出内存警告时才会调用。另一个想法是将它放在 -viewDidDisappear:animated 中,但这种方法的问题是另一个视图可能位于由我的视图控制器控制的视图之上。在那种情况下,我不想关闭数据库连接或清理临时文件。
如果 dealloc 不是合适的位置(这是我的直觉),应该在哪里进行这种类型的清理?我有点讨厌强迫我的视图控制器的父级必须调用一个方法来响应它的子级从导航堆栈中弹出。
【问题讨论】:
标签: objective-c ios uiviewcontroller dealloc