2012-05-16 79 views
3

我想加載一個視頻文件到NSData中,如果我使用dataWithContentsOfFile:,它會花費大量的內存,當文件太大。 如何獲得具有偏移量和長度的文件的特定數據。 我需要分片上傳視頻文件。如何獲得一個巨大的視頻文件片數據

回答

1

NSData *data = [NSData dataWithContentsOfMappedFile:<path>]; 
NSRange first4k = {0, MIN([data length], 4096)}; 
return [data subdataWithRange:first4k]; 

給你只是一個文件的第一個4K無需加載它的全部。

但dataWithContentsOfMappedFile:已在iOS5中棄用。

我想 - 警告:未經測試! -

+ (id)dataWithContentsOfURL:(NSURL *)aURL options:(NSDataReadingOptions)mask error:(NSError **)errorPtr 

與掩模組到

NSDataReadingMappedIfSafe 

NSDataReadingMappedAlways 

應該做的工作也是如此。

這是iOS5中的新功能。

0

這裏有一篇文章,可能會從Cocoa is my Girlfriend

幫助幾個星期前馬特龍在和一個應用程序運行內存的問題。他有一個巨大的數據文件,他需要加載和處理,並且該記憶點擊比應用程序能承受的更多。它會加載到一個NSData中,但在他完成之前,應用程序會缺少內存並死亡。