我在泄漏中注意到,每次动画或png第一次使用时,数据似乎都会“泄漏”(尽管我有点怀疑这是否是真正的泄漏).
所有这些图像都已声明使用
framename = [[Nsstring alloc] initWithFormat:@"image.png"];UIImage * u = [UIImage cachelessImagenamed:framename];
所以我不相信缓存图像应该有问题.
有没有其他人对此png_malloc分配有同样的问题?
The instruments screenshot
*注意:我正在使用arc,并且在释放函数中动画被设置为nil;但是,在应用程序退出之前不会调用它们.如果只创建一次动画,每次运行动画时是否会产生问题?
编辑更多代码:
-(voID) createSymbolAnimations{ if (symbolAnimations == nil) { symbolAnimations = [[NSMutableArray alloc]init]; } Nsstring * framename; if (thisAnimation == nil) { thisAnimation = [[NSMutableArray alloc] init]; } for (int x= 0; x< 40; x++) { framename = [[Nsstring alloc] initWithFormat:@"image%d%s",x,".png"]; UIImage * u = [UIImage cachelessImagenamed:framename]; [thisAnimation addobject:u]; } [symbolAnimations addobject:thisAnimation];}
是动画的创作.想象一下,我有一些这些,然后我改变动画集并开始使用此片段触摸动画:
UIImageVIEw * aVIEw = [frameArray objectAtIndex:x]; aVIEw.image = [[symbolAnimations objectAtIndex:x]objectAtIndex:0];[aVIEw startAnimating];
其中x是我要设置动画的图像集,0是动画的第一帧.
所以图像改变了很多次,我开始担心每次动画图像改变时,RAM都不会被清除,而是被重写/重写.
编辑图像采集卡
+(UIImage *) cachelessImagenamed: (Nsstring *) name{ return [UIImage imageWithContentsOffile:[[NSBundle mainBundle] pathForResource:name ofType:nil]];}解决方法@H_404_49@ 为了防止以后有人发现这个问题,我发现了问题.
在这个项目中用于动画的png是在windows中创建的(不确定它是多么相关),似乎文件格式与XCode期望的png略有不同.这不允许任何png被释放.如果您将格式转换为Mac的png,它似乎工作正常.我做到了这一点
mogrify -type truecolormatte -format png *.png
调整完所有图像后,泄漏率大大降低,一切似乎运行良好.
总结以上是内存溢出为你收集整理的ios – 表观泄漏:png_malloc全部内容,希望文章能够帮你解决ios – 表观泄漏:png_malloc所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)