2010-09-09 72 views
6

偶爾。一般來說,當這個WatchDog已經準備放棄其他後臺應用程序,所以在一秒鐘或兩秒內內存不足的情況下,UIImagePicker控制器仍然卡住。的UIImagePickerController被「卡」與快門在低內存條件下的UIImagePickerController我用快門被「卡住」關閉關閉

有沒有其他人遇到這個實施任何形式的解決辦法或找到一種方法,以檢測當選擇器處於這種狀態,以便它可以被刪除,一個新的放在它的位置。

想法/想法/解決方案?

回答

2

您是否嘗試過使用開始UIImagePicker之前的malloc()分配(然後釋放),兆字節或兩個的記憶?或者在您的應用程序中稍早聲明它,然後在您想要顯示選擇器時發佈它。

我想你應該可以看到大致UIImagePicker需要通過運行儀器內你的應用程序成功運行的內存量。

雖然不理想,應該導致其他應用更早給出內存警告,因此UIImagePicker然後應該有足夠的內存來運行。

+0

如果您使用重複的NSTimer在幾毫秒內安排小數大小塊中的一堆malloc,它將允許更多時間來處理內存警告,以清理其他後臺應用程序的內存使用情況。然後在調用圖像選擇器之前釋放所有這些。 – hotpaw2 2010-09-19 20:25:49

+0

@ hotpaw2:是的,這可能是一個好主意,謝謝!我想我已經讓塊很大(並且可能不會小於UIImagePicker所要求的最大塊),否則就會在應用程序的堆中引入碎片。 – JosephH 2010-09-20 00:03:22

+0

我已經玩了一下。 Strangley夠了,簡單地做一個alloc – 2010-09-21 07:14:02

0

這也是相機應用程序的已知行爲。我想你不能做任何事情,除非在開始之前釋放盡可能多的內存。你可以自己提出一個記憶警告,這樣每個應用程序都會收到它並開始釋放內存,但我不知道如何才能做到這一點。我開始調查自己發送通知(UIApplicationDidReceiveMemoryWarningNotification),但沒有成功。我想我們需要沿通知發送一個對象來定義警告級別,但我真的不確定。

+0

你不能提出一個系統的警告通知自己 - 'UIApplicationDidReceiveMemoryWarningNotification'是,它是內部只有你的應用程序的通知。 – rpetrich 2010-09-21 03:17:01

+0

@rpetrich:謝謝! – VdesmedT 2010-09-21 07:49:13