2016-05-10 75 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++類型?

回答