我有一个包含各种动画和图像的应用程序。该应用程序可以正常运行大约 30 分钟,但随后崩溃。png_malloc
我查看了这些工具,我注意到每次标记堆时都会构建一大堆 7kB 的分配(每几分钟大约 300kB)。
我在我的泄漏中注意到,每次动画或png
第一次使用时,似乎都会出现数据“泄漏”(尽管我有点怀疑这是否是真正的泄漏)。
所有这些图像都已使用声明
frameName = [[NSString alloc] initWithFormat:@"image.png"];
UIImage * u = [UIImage cachelessImageNamed:frameName];
所以我不相信缓存图像应该有问题。
有没有其他人对这个png_malloc
分配有同样的问题?
*注意:我正在使用 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]];
}