美文网首页
避免内存爆增的方法

避免内存爆增的方法

作者: heart_领 | 来源:发表于2018-12-18 09:05 被阅读8次

一、NSOutputStream

//创建流,append为YES的话,每次写入都是追加到文件尾部
 self.outpustream = [NSOutputStream outputStreamToFileAtPath:[self getSaveFilePath] append:YES];
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
       
        [self.outpustream open];
        [self.outpustream write:data.bytes maxLength:data.length];
        [self.outpustream close];
        
//        [self saveFile:data];
    });

二、NSFileHandle

- (void)saveFile:(NSData *)data {
    //保存文件的路径
    NSString *filePath = [self getSaveFilePath];
    //如果文件不存在,返回的是nil
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
    //判断文件存不存在
    if (fileHandle == nil) {
        //如果文件不存在,会自动创建
        [data writeToFile:filePath atomically:YES];
    }else {
        //让offset指向文件的末尾
        [fileHandle seekToEndOfFile];
        //在文件的末尾再继续写入文件
        [fileHandle writeData:data];
        // 同步一下防止操作混乱
        [fileHandle synchronizeFile];
        //关闭文件
        [fileHandle closeFile];
    }
}
- (NSString *)getSaveFilePath{
    
    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"video.mp4"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
        [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
    }
    return filePath;
}

相关文章

  • 避免内存爆增的方法

    一、NSOutputStream 二、NSFileHandle

  • iOS 应用闪退

    1.函数无限递归爆栈(内存爆增/过大)(表视图返回Cell和返回行高的方法互相调用) 2.某对象无法解析某个方法(...

  • 解决WKWebView加载白屏问题

    情况一:由于内存爆增而导致的加载白屏。解决方法:在wkwebview代理中重新加载 情况二:后台运行一段时间,返回...

  • 避免内存溢出的方法

    OOM(Out Of Memory,内存溢出)是指程序在申请内存的时候,没有足够的内存空间供其使用,出现 Out ...

  • iOS压缩高清大图的方法

    普通方法有可能爆掉内存,这里改一下: 方法一: 方法二:

  • 谈谈你对闭包的理解

    (1)、使用闭包主要是为了设计私有的方法和变量。 闭包的优点是可以避免全局变量的污染, 缺点是闭包会常驻内存,会增...

  • Android内存泄漏场景及解决方法

    本文包括以下内容: 内存泄漏原理 Android内存泄漏发生的情况 检测内存泄漏的工具、方法 如何避免内存泄漏 更...

  • SDWebImage内存爆增问题及Image解压缩

    前言 在一次偶然Feed流开发,出现滑动视图后内存爆增并且退出Feed界面内存没有被回收的问题。 分析定位 用in...

  • IOS Map地图内存释放

    为了防止重复打开控制器,导致内存暴增 在dealloc方法释放 地图缩放地图产生的内存这样释放

  • RxLifeCycle

    介绍 在 内存泄漏 中介绍了使用 Disposable 来避免内存泄漏。但这个简单的方法需要重载 onDestor...

网友评论

      本文标题:避免内存爆增的方法

      本文链接:https://www.haomeiwen.com/subject/nqnckqtx.html