2013-11-28 81 views
0
的清潔

我在爲我清洗的UIView作爲內存沒有釋放上的UIView

UIView *get_mainview = (UIView*)[self.view viewWithTag:100];
//IMP code to remove sbview [[get_mainview subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
get_mainview添加爲UIViewController中的孩子一個UIView加載更多資源(圖片&視頻)清除它的對象,但內存不釋放。如果我寫

[get_mainview release]; 

我得到的錯誤,因爲我加入進一步其它chield到get_mainview 注 - 我不使用ARC。 我正在使用Xcode 5.0 請幫助我們如何釋放內存。

+0

嘗試nslog保留每個對象在你的類中的數量。然後你可能知道哪個對象不會釋放。 –

+0

實際上父元素是get_mainview,如果我正在清理它,那麼它會刪除它的所有對象child&associate child's right? –

+0

你得到的錯誤是什麼? – Amar

回答

0

你需要調用[get_mainview removeFromSuperview]而不是release,這樣它的父將減少引用計數1.

不要在查看通話release,如果你不保持它的任何地方,剛剛從上海華取出應該做的伎倆。

希望有幫助!

+0

如果我正在[get_mainview removeFromSuperview]並再次在get_mainview中添加其他內容,則不會顯示子元素。 –

+0

@anupammishra如果你想重用'get_mainview'實例,那麼你應該把它作爲ivar/property並且'retain'直到需要。當你這樣做的時候,在視圖控制器的'dealloc'方法中,你應該釋放它。 – Amar

+0

@anupammishra我希望你對ObjectiveC中的內存管理有基本的瞭解。如果沒有,我建議你先閱讀。 – Amar

0

如果我們假設您正確地釋放了對象,那麼請檢查您加載的圖像是否未加載[UIImage imageNamed:@""];,因爲此方法會緩存圖像供以後使用。

+0

我正在使用RNCryptor來加密和解密內存中的圖像。當圖像被解密時,它使用像這樣的UIImage * image =(解密的圖像在內存中); [uiimageview setImage:image]; –

+0

好的,事實並非如此。我會保留答案,你。 – graver