簡體   English   中英

iPhone NSMutableArray與SQLite

[英]iPhone NSMutableArray vs. SQLite

我有一個為iPhone開發的目錄,這是我的第一個應用程序。 因此,當目錄中的照片超過55張時,我會遇到內存泄漏和應用程序崩潰的問題。 (我將在崩潰時說明)

我已經使用泄漏性能工具進行了測試,並且成功修復了泄漏,但是我的應用仍然崩潰。

我的數據類有5個NSMutableArrays。 1個有50個用於Portrait的UIImage元素。 第二個有25個用於Landscap的UIImage元素(目錄使用2個肖像合1個風景圖像)。 其他有50個NSNumber作為縱向Array到橫向Array的參考圖像位置。 另外兩個具有50個NSString元素,分別具有圖標圖像的(1)名稱和(2)地址。 在AppDelegate(應用程序負載)中創建一個Data類對象。

我以Portrait啟動目錄,通過傳遞portrait Array(帶有UIImages)來創建視圖。 當設備向左轉時,我將重新制作通過橫向Array的視圖(釋放舊視圖)。 在xCode中,所有這些都可以正常工作!!! 在設備中,當我向左轉設備(以重新制作視圖)時,有時(當我打開其他應用程序時注意到),該應用程序崩潰並顯示以下消息:“程序收到信號:“ 0”。數據格式化程序暫時不可用”

我知道此消息涉及內存泄漏問題,所以我的問題是:

使用SQLite存儲我的數據(實際上在NSMutableArrays中)我將獲得內存性能嗎? 我是iPhone的SQLite的新手。 還有其他解決方案來存儲我的數據嗎?

謝謝大家!

這個問題與NSMutableArraySQLite而與內存使用有關。 UIImage通常會占用大量內存,並且在不需要時應釋放​​它,通常在不可見時才釋放。 您的應用程序可能有0個泄漏,但仍然會崩潰。 您將需要注冊UIApplicationDidReceiveMemoryWarningNotification通知並采取相應措施。 UIViewController已經響應- (void)didReceiveMemoryWarning ,您可以對其進行覆蓋。 現在,當您需要釋放內存時,可以將這些圖像存儲在磁盤上了,可以使用SQLite或我建議的方式,只需創建一個緩存文件夾即可。

我喜歡SQLite作為解決方案。 提供一個預先填充的數據庫很容易,除此之外,您只需將應用程序掛接到可以添加/刪除/更新記錄的某些方法中即可。

SQLite不會解決您的問題-問題是內存管理。 弄錯了,與存儲數據的位置無關。

分開兩個問題-顯示與存儲。 使顯示正常工作,然后擔心在哪里存儲數據。

暫無
暫無

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

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