【问题标题】:UIGraphicsGetImageFromCurrentImageContext and Swift Memory UsageUIGraphicsGetImageFromCurrentImageContext 和 Swift 内存使用
【发布时间】:2016-01-11 08:44:28
【问题描述】:

在一个应用程序中,我们使用以下函数创建一个组合多个图像的图像。

      UIGraphicsGetImageFromCurrentImageContext

一开始我们并没有注意到这个问题,因为函数 UIGraphicsGetImageFromCurrentImageContext 被多次使用。但是当应用程序完成并开始测试时,我们注意到在某些情况下应用程序由于应用程序内存使用而崩溃。每次我们执行 UIGraphicsGetImageFromCurrentImageContext 都会占用一些内存。我们注意到,在我们的应用程序的某些部分,我们不得不多次调用该函数,这是问题浮出水面的时候。

此外,当从循环中调用以下函数“combineImages”完成时,内存使用量会显着下降。

您可以在下面找到导致问题的应用程序部分。

func combineImages() -> UIImage {


    let imageSize = CGSizeMake(pageWidth ,pageHeight);

    UIGraphicsBeginImageContextWithOptions(imageSize, false, 1.0);

    let rectCombine = CGRectMake( 0, 0, imageSize.width, imageSize.height)

        image1.drawInRect(rectCombine)
        image2.drawInRect(rectCombine)
        image3.drawInRect(rectCombine)
        image4.drawInRect(rectCombine)

    let combinedImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return combinedImage 

  }

【问题讨论】:

标签: ios swift memory uiimage


【解决方案1】:

我们发现了这个函数

    func combineImages()

对于我们的记忆问题几乎是无辜的。当我们试图查明该函数的问题时,我们会更改调用该函数的位置。

在将新图像添加到电影之前,我们从电影创建循环中调用了这个函数。

现在我们在电影创建循环开始之前使用 combineImages 创建图像。

当我们创建组合图像时,我们注意到内存使用量根本没有增加。

此外,减少创建电影文件时增加的内存使用量。

【讨论】:

  • 我想添加评论。当 combineImages() 从循环中调用时,同样的内存问题也发生在我们身上。所以我们使用定时器动作来调用函数。
猜你喜欢
  • 2015-09-08
  • 2013-11-26
  • 2011-07-04
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多