gpt4 book ai didi

ios - 绘制一系列UIImages和内存问题

转载 作者:行者123 更新时间:2023-11-28 22:21:22 25 4
gpt4 key购买 nike

我需要在彼此之上绘制一系列大型 UIImage,我遇到了内存问题,我想知道是否有人有解决方案。

下面的代码举例说明了我的函数调用是如何工作的。已简化功能以显示我的主要问题。

“generateImage”函数有一个 for 循环调用一个子类,该子类还返回从一系列路径生成的图像。我已将 @autoreleasepools 放在调用周围,以便生成的图像在使用后立即释放,但这似乎不起作用,当 arrayOfSubImages 增长时,我遇到了内存问题。

-( UIImage *)   generateImage
{
@autoreleasepool {

UIGraphicsBeginImageContextWithOptions( CGSizeMake( 1000, 1000 ), NO, 0.0 );

CGContextRef context = UIGraphicsGetCurrentContext();

UIGraphicsPushContext(context);

for ( SubImage *subImage in arrayOfSubImages ) {
UIImage *aImage = [ subImage imageFromPaths ];
[ aImage drawAtPoint:CGPointZero ];
}

UIGraphicsPopContext();

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
return image;
}
}

从generateImage调用的SubImage

-( UIImage *)   imageFromPaths
{
@autoreleasepool {

UIGraphicsBeginImageContextWithOptions( CGSizeMake( 1000, 1000 ), NO, 0.0 );

CGContextRef context = UIGraphicsGetCurrentContext();

UIGraphicsPushContext(context);


for ( UIBezierPath *path in arrayOfPaths ) {
[ path fill ];
}


UIGraphicsPopContext();

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
return image;
}
}

任何帮助将不胜感激

礼萨

最佳答案

我以前遇到过类似的问题。尝试在您的 for 循环中 添加一个@autoreleasepool,因为您可能会通过在紧密循环中执行多个内存密集型操作而遇到内存问题。内存不会自动释放,直到循环结束,即使该循环包含在自动释放池中也是如此——您需要释放每个单独的迭代。

关于ios - 绘制一系列UIImages和内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com