我一直在研究Objective-C中的一些XML实用程序,包括我自己的IO流对象,这些对象都是围绕FILE *
值构建的。为了安全地做到这一点,当流对象被释放时(如果我还没有这样做的话),我在文件指针上调用fclose
是非常重要的。NSObject finalize已弃用 - 我该怎么做?
我对这个(以及其他许多重新分配任务)的策略早已覆盖finalize
方法NSObject
。不过,我刚刚阅读(并通过测试证实)finalize
在释放期间不再被调用。
垃圾回收在OS X v10.8中不推荐使用;相反,您应该使用自动引用计数 - 请参阅Transitioning to ARC Release Notes。
因此,显然我现在已经通过了OS X的两个版本,却没有意识到我一直在流失系统资源。我阅读了这些发行说明,并且找不到有关此特定问题的任何参考。我无法找到处理释放的其他方法。
我为C/C++数据类型编写了很多Objective-C包装器。当包装被释放时,我需要以某种方式释放非托管内存。
是否有替代finalize
的ARC?如果不是,我应该怎样处理我的NSObject中的malloc'd C/C++类型?