Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 由于内存错误而终止?_Ios_Iphone_Memory Management - Fatal编程技术网

Ios 由于内存错误而终止?

Ios 由于内存错误而终止?,ios,iphone,memory-management,Ios,Iphone,Memory Management,我正在做一个需要管理视频的项目。我需要重命名或删除视频。为此,我们需要将视频保存在NSDATA中,然后对其进行管理。 但由于下面语句中的内存错误,我收到了一条终止的错误消息 已编辑 NSData *data=[NSData dataWithContentsOfFile:self.path]; if (data){ BOOL success = [data writeToFile:videopath atomically:NO]; } self.path包含视频文件的路径。它在小尺寸视频

我正在做一个需要管理视频的项目。我需要重命名或删除视频。为此,我们需要将视频保存在NSDATA中,然后对其进行管理。 但由于下面语句中的内存错误,我收到了一条终止的错误消息

已编辑

NSData *data=[NSData dataWithContentsOfFile:self.path];
if (data){
    BOOL success = [data writeToFile:videopath atomically:NO];
}
self.path包含视频文件的路径。它在小尺寸视频(4-10分钟)中工作,但在大尺寸视频(大于20-30分钟)中崩溃


请给出建议。

您正在应用程序中以
NSData
的形式维护完整视频。不要将视频文件用作
NSData
,而是将视频复制到某个位置(例如)。您可以删除或重命名旧视频。

使用此代码将视频文件加载到内存,您的代码可以处理小文件,但处理大文件时会失败

if ( [[NSFileManager defaultManager] isReadableFileAtPath:source] ){

    [[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil];}

我不知道你的要求是什么。从您的问题中,我了解到您需要重命名视频文件。对于重命名,我们为什么需要将其作为NSdata读取,然后再次写入相同的数据。要重命名,请尝试以下代码

NSFileManager *filemanager = [NSFileManager defaultManager];

if ([filemanager fileExistsAtPath:filePath])
{
    NSString *target = [[filePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:newnameofthefile];

    [filemanager moveItemAtPath:filePath toPath:target error:nil];
}

我希望这能帮助你……

请解释什么是“自我路径”。我认为您需要首先检查是否提取了数据。在“writeToFile”之前。请将整个代码和什么是
self.path
放在这里??带文件名的完整路径的文件名?我现在已经更新了这个问题。请advice@sanchitsingh重命名/删除文件时,为什么需要读取视频文件数据?您不能为此使用
NSFileManager
API吗?对于重命名,请使用
moveItemAtPath:toPath:error:
;对于删除,请使用
removitematpath:error:
@Amar,您的逻辑正在运行。谢谢。