首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVMutableComposition内存泄漏

AVMutableComposition内存泄漏
EN

Stack Overflow用户
提问于 2018-02-15 11:39:24
回答 2查看 595关注 0票数 3

我的应用程序结合了视频序列,并根据情况将音乐添加到最后的序列中。添加音乐后,应用程序检查用户是否选择了一个视频进行介绍,然后将其合并到最终视频中。

在运行分析器时,当我第二次和第三次这样做时,我发现内存泄漏:

代码语言:javascript
复制
AVMutableComposition *composition = [AVMutableComposition composition];

当组合初始视频序列时,它不会显示内存泄漏。但是如果应用程序添加了音乐和介绍,它就会漏出内存。

当添加音乐时,我创建一个新的构图和一个新的添加介绍。这种情况不会发生在代码的同一部分。

是问题所在吗?我不能创建多个AVMutableComposition?我怎样才能摆脱这些内存泄漏呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-20 09:04:00

我没有找到一个完美的解决方案,但在应用程序的过程中,我通过一个单例程序将泄漏减少到了一个。

代码语言:javascript
复制
@property (strong, nonatomic) AVMutableComposition *composition;

static FBVideoEditor *instance = nil;

+ (FBVideoEditor*) shared {
    if (instance == nil) {
        instance = [[FBVideoEditor alloc] init];
    }
    return instance;
}

- (AVMutableComposition*) getComposition {
    if (_composition == nil) {
        _composition = [AVMutableComposition composition];
    }
    for (AVMutableCompositionTrack *track in [_composition tracks]) {
        [_composition removeTrack:track];
    }
    return _composition;
}

这样做,AVMutableComposition只会第一次泄漏。然后,我的应用程序在没有更多内存泄漏的情况下多次重用它。

票数 0
EN

Stack Overflow用户

发布于 2018-02-20 07:47:01

我也遇到了这个问题,但是我只对我的组合变量做了一个分配,如下所示:

代码语言:javascript
复制
    AVMutableComposition* tSilencingComposition = [AVMutableComposition composition];

我不再重复使用组合指针,而是将其赋值为零,并让ARC在应用程序过程中完成它的任务--但是每次我碰到这条线时,我都会收到泄漏报告。这似乎是AVMutableComposition中的一些东西。

仪器报告说,我在这个分配中泄漏了6个字节,而进一步的钻取产生了与那些FigXPC*调用相同的报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48806361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档