依赖确定性 dealloc(例如:用于清理)是一种合法的做法吗?
由于 ARC,甚至手动引用计数,本质上是确定性的,我想知道其他人对依赖立即调用 dealloc 的想法(相对而言,考虑 autoreleasepool)。
在其他现代编程语言(如 C#)中,当您需要确定性清理时,会使用类似 dispose 的模式。我会想象带有垃圾收集的 Obj-C 也会鼓励这种行为。
因此,话虽如此,一个例子是 UIViewController,它取消了 dealloc 中的未完成操作,而不是尝试围绕 viewDidDisappear 有时令人沮丧的语义进行编程。
另一个示例是流对象,它分别在 init 和 dealloc 中隐式打开和关闭,而不需要调用 open 或 close。
由于 Apple 已弃用 GC,我想这些模式不会很快被打破,而且它们非常方便,尽管我找不到任何关于是否应该鼓励这样做的文档。