对于具有与非内存资源相关的某些状态的对象,通常会提供一种方法来显式地“完成”该资源。是否有首选的常见做法来处理仍处于“使用我的资源”状态时尝试释放对象的情况?我已经看到了几种不同的方法:
- 记录程序员犯了一个错误并告诉他们如何调试它(
NSLock
这样做) - 让调用者选择资源是由调用者管理还是在释放时放弃(例如
NSFileHandle
) - 如果对象未处于预期的最终状态,则引发异常,即断言程序员不会以这种方式使用我的对象
- 出门时总是打扫卫生。
GC 文档确认与内存管理一起管理其他资源是一个坏主意,并且(但)提供了一个执行 4 的示例,尽管有一些警告。那么有没有人“选择”了一种始终遵循的方法?