2016-05-10 76 views
0

我一直在研究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++类型?

回答