Ios iPhone正在将大尺寸视频下载到文档目录(约300 mb)

Ios iPhone正在将大尺寸视频下载到文档目录(约300 mb),ios,memory-management,download,nsurlconnection,mpmovieplayercontroller,Ios,Memory Management,Download,Nsurlconnection,Mpmovieplayercontroller,我需要你对我陷入困境的情况提出建议/建议。我正在开发一个iPhone应用程序,它有12-15个视频。用户可以下载任何视频,然后在iPhone上播放。问题是我正在将视频写入文档目录。它适用于小视频(~50MB),但当选择较大的视频(~250MB)时,由于内存不足警告,应用程序会崩溃 我知道由于内存占用增加,应用程序正在崩溃。是否有其他方法可以更高效地(分块)下载大文件,同时降低内存利用率?否则,我会考虑只为小视频提供下载选项,为大尺寸视频提供流媒体选项。1)使用异步NSUrlConnection

我需要你对我陷入困境的情况提出建议/建议。我正在开发一个iPhone应用程序,它有12-15个视频。用户可以下载任何视频,然后在iPhone上播放。问题是我正在将视频写入文档目录。它适用于小视频(~50MB),但当选择较大的视频(~250MB)时,由于内存不足警告,应用程序会崩溃


我知道由于内存占用增加,应用程序正在崩溃。是否有其他方法可以更高效地(分块)下载大文件,同时降低内存利用率?否则,我会考虑只为小视频提供下载选项,为大尺寸视频提供流媒体选项。

1)使用异步NSUrlConnection对象下载视频

2) 事先创建一个文件来保存视频,获取文件描述符,并在打开的文件上设置F_NOCACHE标志,以避免占用磁盘缓存中的内存

3) 当您在委托调用中获得作为NSData对象的小块数据时,请将它们附加到打开的文件中

4) 下载完成后,关闭文件


您可能需要验证设备是否有足够的空间接受下载;这里有一些帖子介绍了如何做到这一点。

展示了您用来下载和写入文件的代码。是否使用WIFI下载如果您将下载缓冲区保存在
NSData
对象中,则应将其写入文件中,并在出现新数据时不断追加。在任何情况下,您都应允许流式传输。使用适当的HTTP流时,用户体验通常会好得多。对于实际的下载过程,如果真的需要,DavidH给出了正确的答案。