簡體   English   中英

ARC iOS中的內存壓力

[英]Memory Pressure in ARC ios

我正在開發一個iPad應用程序。 從另一個視圖僅推送視圖沒有彈出。 由於內存壓力,app有時會終止。 我使用產品->配置文件調試。 在每個視圖中,都有許多記錄視頻等的圖像分配,並且從每個視圖中分配了大約80-100mb,當它到達接近400 mb時,應用程序崩潰。

當視圖消失時,是否有任何方法可以在ARC中取消分配內存? 我嘗試過的對象= Nil; 但不起作用。

請幫我,我正在搜索最近2天。

工作流程->這是一個類似於提交個人詳細信息的應用程序,首先是在表格視圖中選擇一些數據,然后是面部視頻記錄,然后是身體視頻記錄,然后是房間視頻記錄,然后是一些表單提交,最后是上傳視圖

如果您正在加載圖像,例如:
[UIImage imageNamed:@"myImage.png"];
然后,該圖像的內存將不會被釋放,因為imageNamed:緩存了該圖像。 此方法對於顯示一些小圖標,頭像等很有用。因此,如果必須顯示許多大圖像,請使用
UIImage *myImage = [UIImage imageWithData:[[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"];
當該對象的保留計數等於0時,這將不會緩存圖像,並且將釋放內存。

除此之外,當您將來僅推送視圖控制器而沒有彈出它時,該視圖控制器將永遠不會被釋放,並且將始終在內存中占有一席之地,直到應用程序不會崩潰/被殺死,或者直到持有該視圖控制器的ViewController會消失。沒有釋放。

因此,請確保在不再需要viewController的情況下釋放了它(即,如果將其推送則將其彈出,或者以模態呈現的方式將其關閉),然后顯示下一個視圖控制器。

我假設您有一個將視圖推入的導航控制器。 如果是這樣,則不彈出視圖就不應該推送視圖。 基本上,不使用導航控制器,而只是在通過UI時在視圖控制器之間進行轉換。 使用presentViewController,選擇過渡樣式並使全屏顯示樣式起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM