2013-07-29 102 views
0

我有一個對象,它包含許多容納很多較小對象的較小對象。 爲了清理內存,我希望能夠一次釋放所有的對象。一次銷燬對象的整個層次結構

我使用ARC,所以我想,如果我只想做initialObject = nil,會做的伎倆...但我沒有看到它的工作(內存仍然在使用)。

對象包含objective-c和C++(openCV)代碼;

我該如何實現我需要做的事情?

回答

0

創建一個數據結構,它是NSobject類型的子類,並在其中放置一個dealloc方法,並釋放該dealloc中的所有較小對象。當您的工作完成時釋放主對象。這是簡單的老闆。

+0

我不能在ARC項目中使用dealloc – YogevSitton

+0

@godmoney:當然你可以用ARC實現'dealloc'。 ARC只管理Objective-C對象的生命週期。如果你的類有其他資源,你必須*實現'dealloc'來釋放它們。 –

0

爲包含在初始對象中的較小對象創建弱引用。 使用__weak標識符。 (對於ARC) 將initialobject設置爲零時,如果沒有對較小對象的強引用,則會釋放它們。

0

只需將引用這些對象的變量設置爲零即可。編譯器會在那一刻釋放這些對象,如果沒有其他強引用存在,它們將被銷燬。

將保存較小對象的對象設置爲零,該對象設置爲零。

這意味着你需要做的是首先將子對象設置爲nil,其中根對象不包含對象,然後將根對象設置爲零,根對象和子對象將被銷燬。