NSObject finalize 已弃用 - 我该怎么做?
NSObject finalize is deprecated - what do I do instead?
我一直在研究 Objective-C 中的一些 XML 实用程序,包括我自己的围绕 FILE *
值构建的 IO 流对象。为了安全地执行此操作,重要的是我在释放流对象时在文件指针上调用 fclose
(如果我还没有这样做的话)。
我对此(以及许多其他重新分配任务)的策略长期以来一直是覆盖 NSObject
的 finalize
方法。但是我刚刚读到(并通过测试确认)finalize
在释放期间根本不再被调用。
Garbage collection is deprecated in OS X v10.8; instead, you should use Automatic Reference Counting—see Transitioning to ARC Release Notes.
很明显,我现在已经使用了 OS X 的两个版本,却没有意识到我一直在消耗系统资源。我通读了这些发行说明,但找不到任何关于这个特定问题的参考。我找不到任何替代方法来处理释放。
我经常为 C/C++ 数据类型编写 Objective-C 包装器。当包装器被释放时,我需要一些方法来释放非托管内存。
是否有 finalize
的 ARC 替代方案?如果不是,我应该如何处理我的 NSObjects 中的 malloc'd C/C++ 类型?
来自 NSObject class reference...
我一直在研究 Objective-C 中的一些 XML 实用程序,包括我自己的围绕 FILE *
值构建的 IO 流对象。为了安全地执行此操作,重要的是我在释放流对象时在文件指针上调用 fclose
(如果我还没有这样做的话)。
我对此(以及许多其他重新分配任务)的策略长期以来一直是覆盖 NSObject
的 finalize
方法。但是我刚刚读到(并通过测试确认)finalize
在释放期间根本不再被调用。
Garbage collection is deprecated in OS X v10.8; instead, you should use Automatic Reference Counting—see Transitioning to ARC Release Notes.
很明显,我现在已经使用了 OS X 的两个版本,却没有意识到我一直在消耗系统资源。我通读了这些发行说明,但找不到任何关于这个特定问题的参考。我找不到任何替代方法来处理释放。
我经常为 C/C++ 数据类型编写 Objective-C 包装器。当包装器被释放时,我需要一些方法来释放非托管内存。
是否有 finalize
的 ARC 替代方案?如果不是,我应该如何处理我的 NSObjects 中的 malloc'd C/C++ 类型?
来自 NSObject class reference...