2015-01-09 39 views
2

我在嘗試在iPad應用中預覽大文件時出現問題。在應用程序中,我們使用UIDocumentInteractionController。當我們嘗試打開大文件(> 100 MB)時,UIDocumentInteractionController僅顯示一個灰色屏幕,其中包含文件的名稱和大小。使用QLPreviewController試圖預覽大文件的問題

爲了縮小這個問題,我們做了一個簡單的應用程序,只嘗試使用QLPreviewController預覽文件,我們發現相同的問題。

該問題似乎與內存使用有關。由於該文件的最大尺寸,您可以預覽有關iPad模型和後臺應用程序數量的更改。

嘗試使用UIWebView預覽文件更糟:應用程序崩潰(內存警告)。

如何使用QLPreviewController預覽大文件?我是否應該做一些特別的事情?我應該使用其他組件嗎?哪一個?

+0

你正在處理什麼類型的文件? –

+0

該問題已被檢測到PDF文件。但該應用程序也管理微軟Office文件,圖像等 – Carlos

回答

0

你可能無法做到你想做的 - 看起來UIDocumentInteractionController只能接受一個URL,而不是一個打開的文件。

通常,您使用的技巧是使用'映射'文件 - 這是一個文件,不需要完全讀入內存,但使用虛擬內存根據需要拉入,然後釋放未使用的塊。

如果你look at this answer你可以看到如何用NSData對象做到這一點。有了這樣一個對象,你可以初始化其他類型的數據對象 - 只是不確定現在該怎麼做UIDocumentInteractionController。

+0

嗨大衛。我們正在使用網址。一個URL指向一個大的pdf – Carlos

+0

你必須挖掘。我剛剛看到Apple支持「數據URL」 - 請參閱https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#//apple_ref/doc/uid/10000165i。如果是這樣,你可能會以某種方式使用NSData對象 - 實際上,我從來沒有這樣做過,但它有可能讓它工作。在任何情況下,訪問大量文本/數據文件的方式都是使用操作系統的mmap功能。 –