UIImage的动画曹景伟应用崩溃/内存泄漏(UIImage Animation Causing A

2019-09-03 05:44发布

我使用一个UIImage的动画,它是引起了无数内存泄漏和使用应用程序的不同用户的崩溃。

下面是我的代码。 我在预加载的viewDidAppear组两个动画

pointsView.image = [UIImage的imageNamed:@ “C72.png”];

    NSMutableArray *menuanimationImages = [[NSMutableArray alloc] initWithCapacity:21];
    NSString *imageName;

    for( int aniCount = 0; aniCount < 72; aniCount++ )
    {
        imageName = [NSString stringWithFormat:@"C%d.png", aniCount];
        [menuanimationImages addObject:[UIImage imageNamed:imageName]];
    }

    pointsView.animationImages = menuanimationImages;

    pointsView2.image = [UIImage imageNamed:@"I72.png"];

    NSMutableArray *menuanimationImagess = [[NSMutableArray alloc] initWithCapacity:21];
    NSString *imageNames;

    for( int aniCounts = 0; aniCounts < 72; aniCounts++ )
    {
        imageNames = [NSString stringWithFormat:@"I%d.png", aniCounts];
        [menuanimationImagess addObject:[UIImage imageNamed:imageNames]];
    }

    pointsView2.animationImages = menuanimationImagess;
}

我然后使用运行动画

pointsView.animationDuration = 3.11;
pointsView.animationRepeatCount = 1;
[pointsView startAnimating];

有什么建议?

Answer 1:

请阅读我的博客文章关于这个主题: 视频及内存使用上,iOS设备 。 问题的根源在于,你根本无法在同一时间加载到主存储器中这么多的图像。 您需要根本就没有使用UIImageView.animationImages API,它打破严重和诱惑开发商陷入编写恶意代码在设备上运行,这将崩溃。



Answer 2:

您正在加载,它看起来像72个PNG图像到内存中一次? 并根据这些图像的大小,你很可能会达到导致他们给内存警告,并最终崩溃的一些旧设备的内存限制。 我的建议是不要做了72动漫形象。 你可以试着压缩每个图像,这将降低他们的质量和内存大小,但加载72张影像做动画是不摆在首位不错。



文章来源: UIImage Animation Causing App to Crash / Memory Leaks