2012-08-24 83 views
1

的iOS應用我工作的手柄非常大的文件(最大的是在大小2.7演出),以及一些sqlite的表,下載大我越來越控制檯消息像這樣的後:文件大小限制的iOS(5.1+)

Aug 24 14:50:28 unknown TheAppName[1407] <Warning>: Error opening database: 14 unable to open database file 

這種情況發生,加載視圖(已經被加載並提交)會導致崩潰說「筆尖不能定位」也等問題。

該應用程序可以在沒有大的文件就好了運行,但它是有非常有用的。我的問題是這樣的:是大文件導致某種內存問題,還是有一些iOS的文件限制?我在其他地方環顧四周,我一直無法找到與此相關的任何內容。

回答

1

它在模擬器中工作還是你也有同樣的問題呢?

我建議你用ObjectAlloc工具使用儀器來運行你的應用程序。很可能你在管理下載的方式上存在一些泄漏。或者,該文件的設備上是否有可用空間?

其他人有過,只要閃光燈存在足夠的空間下載大文件的成功。你可以測試這個 - 有一些浮動的函數告訴你如何確定可用磁盤空間。

另一個想法:你的文件寫入與「F_NOCACHE」(的fcntl)文件描述符設置標誌的磁盤。這將導致寫入繞過用於緩存磁盤塊和其他內存使用的「統一緩衝區隊列」,並且將大大減輕系統本身的壓力。

+0

該應用程序在模擬器中完美工作,並且該設備具有足夠的文件空間。 – CBredlow

+0

好 - 請看下載時的內存使用情況。模擬器具有記憶功能,即使泄漏也不會耗盡。真正的設備會。另外,這個nocache標誌可以真正幫助減少系統壓力,正如我所指出的那樣。沒有辦法測量或觀察UBC(統一緩衝區高速緩存) - 我曾與WWDC的iOS/OSX系統開發經理討論過這個問題,也沒有辦法做到這一點(現在)。對UBC施加太大的壓力,我有自己的問題。 –

+0

不幸的是,我現在沒有時間來測試它,所以週一我會測試並檢查它是否有效。 – CBredlow

-1

iOS應用程式的最大大小限制爲2GB,這是限制導致所有的錯誤,這就是爲什麼你的應用程序崩潰。我建議您將大文件上傳到文件託管站點,並在需要時將它們流式傳輸到應用程序中。

+0

你碰巧有這個參考嗎?我瀏覽了蘋果的文檔,但無法找到它。 – CBredlow

+0

右鍵 - 一個應用程序是32位。但是,文件有一個64位長,這樣可以明顯大得多 –

+0

地處[這裏](http://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/iTunesConnect_Guide.pdf) – ch1pa