2012-09-16 25 views
3

我的應用程序中下載的數據下載一些圖片和解析的JSON值創建的文本文件。下載的圖像和文本文件中的內容隨後會在不同的視圖控制器中顯示給查看器。的iOS:處理的iOS應用

在我第一次提交應用程序的早些時候,我被拒絕了,因爲我完全忘了提交我的應用程序之前處理這些下載的文件(被下載到文件目錄)。但是從那以後,我一直在確保我的應用程序儘可能完美,這意味着閱讀和重新閱讀數據存儲的準則和人機界面指南一倍下來,當我再次提交我的應用程序不會遭到拒絕。

所以我有一個關於處理數據和存儲幾個問題:

前:我保存所有來自Internet的下載內容到文件目錄(我現在知道是一個錯誤)。然後我創建了一個plist文件,其中包含下載的圖像和文本的路徑。所以我在另一個視圖控制器中必須做的是打開plist文件,讀取圖像和文本文件路徑,並加載內容以顯示給用戶。

當視圖控制器關閉時,我忘了刪除那些下載的文件(雖然我覆蓋了下一個應用程序運行中的現有文件)。其結果是,當你啓動應用程序,還有從中永遠不會被刪除前一交易日約爲15 MB的數據已經存在,但是當用戶做了另一個搜索被改寫。

之後:我採取了以下步驟: a)現在我將所有的互聯網數據下載到「tmp」目錄。一旦第二個視圖控制器關閉並且用戶查看了所有內容,我就從「tmp」目錄中刪除所有文件,包括plist文件。

b)在應用程序啓動時,我還要檢查是否有以前推出(如果應用程序得到終止的)任何剩餘的文件。如果我從以前的會話中找到任何下載的文件,我將它們刪除。 c)當用戶向他/她的收藏夾添加特定數據(例如最喜歡的新聞文章)時,我將相應的圖像和文本保存到/ Documents/Data目錄,並在/ Documents目錄中創建收藏夾PList文件它存儲用戶喜歡的數據的路徑。此plist文件和收藏夾文件不會被刪除,除非用戶從tableview中刪除文章。

,Q 1)上面是一個好辦法?我應該將這些內容保存到/ Library/Caches還是/ tmp好?

問2)我沒有使用iCloud,但同時我想確保如果用戶有任何收藏夾,他們應該備份到iCloud。這是好的,還是我真的必須使用「不備份」屬性的最喜歡的文件?

編輯 艾倫·鄧肯 - 謝謝你的內存泄漏回答。

我已經刪除了有關內存泄漏的問題。關於數據存儲問題,它們都與Apple的人機界面指南有關。但是如果你能回答其餘任何問題,這將是有價值的。

+1

您可以通過每次發帖詢問一個問題獲得更多成功 - 您至少應該提出兩個問題,因爲您的存儲位置(Documents/iCloud)與您的泄漏問題(儀器)無關 – Till

+1

只要問題4 - 根據已發佈的情況,沒有(監管)期望的0泄漏。但審查過程遠未透明。 – FluffulousChimp

+0

@我在這裏修改了一下我的問題。但你能至少回答其中的任何一個嗎?任何答案都是有價值的。 – BlueChips23

回答

2

存在documents目錄用於存儲用戶自己創建的文件或者以後不能重新創建的文件,因此它們在iCloud上備份或用戶進行iTunes備份時存在。除非用戶卸載應用程序,否則文檔文件夾將永遠不會被清除。

存在緩存目錄用於存儲要在設備上緩存的文件,但可以在以後輕鬆地重新創建,例如下載的圖像。如果設備的可用磁盤空間不足,並且當用戶卸載應用程序時,緩存文件夾可以由操作系統自動清除。

存在臨時目錄用於在會話期間臨時存儲文件。當用戶關閉應用程序時,該文件夾會自動清除。

您應該考慮將用戶喜歡的文章與圖像一起存儲在緩存目錄中,因爲它們可以隨時再次下載。除非您明確聲明,即使在離線模式下(如Pocket應用程序),用戶也應該能夠看到包含圖像的完整文章,那麼您應該將它們與plist一起存儲在文檔目錄中。 搜索結果應該存儲在臨時目錄中,但我不太清楚爲什麼你要將搜索結果保存到磁盤,如果用戶不打算對它們做任何事情?

+0

謝謝。經過大量研究後,我決定將搜索結果中的數據存儲在/ Library/Caches文件夾中,並在用戶移至其他視圖時清除它們。我還決定將用戶收藏夾存儲到/ Documents目錄中,以便將它們備份到iCloud。我需要從搜索結果中存儲數據的原因是因爲我得到的結果只是JSON回覆,我必須處理它們 - 這意味着解析它們以查找文本(並將它們保存到.txt文件中)和圖像鏈接(並下載來自這些鏈接的圖像並將它們保存爲.png文件)。然後顯示那些txt和png文件。 – BlueChips23