从文件路径获取数据时崩溃
Posted
技术标签:
【中文标题】从文件路径获取数据时崩溃【英文标题】:Crashes while fetching data from filepath 【发布时间】:2012-06-13 13:47:44 【问题描述】:应用程序在尝试仅针对大文件 (>100 MB) 从路径/URL(存储在文档文件夹中的视频文件)获取数据时崩溃。
设备详情:ios (4.3)、iPad 1
-
网址完美(已检查日志)
文件存在于该路径(检查路径)
注意:仅在设备上崩溃。
以下是应用崩溃的代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
if ([paths count] > 0)
filePath = [paths objectAtIndex:0];
filePath = [filePath stringByAppendingPathComponent:@"Private Documents"];
filePath = [filePath stringByAppendingPathComponent:@"videos"];
filePath = [filePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",st]];
NSURL *fileUrl=[NSURL fileURLWithPath:filePath];
NSMutableData *Data = [NSMutableData dataWithContentsOfURL:fileUrl]; //CRASHES ON THIS LINE
NSLog(@"Data: %d",[Data length]);
任何cmets。
【问题讨论】:
你能告诉我fileURL的声明吗 感谢詹姆斯的关心。我用更多代码编辑问题。 最重要的是:崩溃说明了什么? 当我在后台执行此操作时,我 rcv: ,收到内存警告。 Level=1 ,收到内存警告。 Level=2 然后崩溃 回答:***.com/questions/11032027/… 【参考方案1】:您似乎内存不足。
在设备上,您的模拟器可用的内存通常要少得多,并且 100MB 可以存储在 RAM 中。考虑将可下载的文件分成更小的块,如果可以的话,分块处理。
我不认为
你花了很长时间,应用程序被杀死。
正如大卫建议的那样,除非你在启动时这样做。
【讨论】:
也许你是对的,但我需要这样做,以下是步骤: 1. 从文件中读取数据 //Crashing 2. 传递数据来解密这个文件 3. 然后从解密创建 MP4 文件数据 4. 然后将 URL 传递给 MPMoviePlayerControll 播放 当我在后台执行此操作时,我 rcv: ,收到内存警告。 Level=1 ,收到内存警告。 Level=2 然后崩溃 这确认您的问题是内存问题,而不是挂起问题。 我检查了只调用从文件路径获取数据的方法,没有其他 UI 和所有。仍然 rcv 内存警告然后崩溃。 那么很简单,你不能。您想存储在内存中的信息量实在是太多了!以上是关于从文件路径获取数据时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
使用无效 URL 调用 addPersistentStoreWithType 时崩溃 - 路径中的文件似乎不是 SQLite 数据库