我正在使用Cocos3D构建一个需要相对大量屏幕截图的应用程序:
imgRef = tmpDrawingVisitor.renderSurface.createCGImage;
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docDir = [paths objectAtIndex:0];
imgPath = [docDir stringByAppendingPathComponent: [[NSProcessInfo processInfo] globallyUniqueString]];
_flippingpath = [imgPath stringByAppendingPathExtension:@"png"];
//UIImage* uiImg= [UIImage imageWithCGImage: imgRef];
uiImgprep= [UIImage imageWithCGImage: imgRef];
//UIImage* uiImg= [UIImage imageWithCGImage: imgRef scale:0.5 orientation: UIImageOrientationUp];
uiImg = [self imageWithImage:uiImgprep scaledToSize:CGSizeMake(512.0, 384.0)];
imgData = UIImagePNGRepresentation(uiImg);
[imgData writeToFile: _flippingpath atomically: YES];
我所做的是截取屏幕截图并将其保存到Document文件夹。之后,在CCSprite中将其映射为动画,就像书籍翻转一样。
代码工作正常,但内存累计累加(每次大约12 Mb),直到点内存都会超载。
在这种情况下如何管理内存?我正在开发IOS 7.1.1,它已经是ARC。
答案 0 :(得分:0)
我不知道我是否正确理解你的应用程序的功能,但是如果我这样做,你是否考虑过只保留当前页面,前一页和下一页的屏幕截图,因为那些是你唯一的需要。
你只能在内存中有三张图片:
向前翻转时,您可以释放前一个然后上一个=当前,然后分配下一个。 向后翻转时,您可以释放下一个,然后下一个=当前,然后分配前一个。
由于您使用ARC,要释放图像,只需确保没有强烈的指针引用即可。
我了解你的问题吗?