我有一個對象,它包含許多容納很多較小對象的較小對象。 爲了清理內存,我希望能夠一次釋放所有的對象。一次銷燬對象的整個層次結構
我使用ARC,所以我想,如果我只想做initialObject = nil
,會做的伎倆...但我沒有看到它的工作(內存仍然在使用)。
對象包含objective-c和C++(openCV)代碼;
我該如何實現我需要做的事情?
我有一個對象,它包含許多容納很多較小對象的較小對象。 爲了清理內存,我希望能夠一次釋放所有的對象。一次銷燬對象的整個層次結構
我使用ARC,所以我想,如果我只想做initialObject = nil
,會做的伎倆...但我沒有看到它的工作(內存仍然在使用)。
對象包含objective-c和C++(openCV)代碼;
我該如何實現我需要做的事情?
創建一個數據結構,它是NSobject類型的子類,並在其中放置一個dealloc方法,並釋放該dealloc中的所有較小對象。當您的工作完成時釋放主對象。這是簡單的老闆。
爲包含在初始對象中的較小對象創建弱引用。 使用__weak標識符。 (對於ARC) 將initialobject設置爲零時,如果沒有對較小對象的強引用,則會釋放它們。
只需將引用這些對象的變量設置爲零即可。編譯器會在那一刻釋放這些對象,如果沒有其他強引用存在,它們將被銷燬。
將保存較小對象的對象設置爲零,該對象設置爲零。
這意味着你需要做的是首先將子對象設置爲nil,其中根對象不包含對象,然後將根對象設置爲零,根對象和子對象將被銷燬。
我不能在ARC項目中使用dealloc – YogevSitton
@godmoney:當然你可以用ARC實現'dealloc'。 ARC只管理Objective-C對象的生命週期。如果你的類有其他資源,你必須*實現'dealloc'來釋放它們。 –