我发布了另一个类似的问题。这是我的旧代码,因为有些ppl会说它会更好,但是我没有找到释放分配内存的解决方案。iphone UIImage数组内存泄漏(旧)
imageArray_danceright = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"FrankieDanceRetime_0001.jpg"],
.. 40 images
[UIImage imageNamed:@"FrankieDanceRetime_00040.jpg"],nil];
imageArray_danceleft = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"FrankieDanceRetime_0041.jpg"],
.. 40 images
[UIImage imageNamed:@"FrankieDanceRetime_00080.jpg"],nil];
imageArray_stand= [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"FrankieSingtRetime_0001.jpg"],
[UIImage imageNamed:@"FrankieSingtRetime_0002.jpg"],
[UIImage imageNamed:@"FrankieSingtRetime_0003.jpg"],nil];
//start animation
myimageview.animationImages = imageArray_stand;
myimageview.animationDuration = 0.23;
myimageview.contentMode = UIViewContentModeBottomLeft;
myimageview.animationRepeatCount = 0.0;
myimageview.image = [myimageview.animationImages objectAtIndex:1];
[myimageview startAnimating];
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
touch = [[event allTouches] anyObject];
if ([touch view] == overlay_fuesserechts) {
[myimageview setAnimationImages:imageArray_danceright];
myimageview.animationDuration = 2.0;
myimageview.contentMode = UIViewContentModeBottomLeft;
myimageview.animationRepeatCount = 1;
[myimageview startAnimating];
}
if ([touch view] == overlay_fuesselinks) {
[myimageview setAnimationImages:imageArray_danceleft];
myimageview.animationDuration = 2.0;
myimageview.contentMode = UIViewContentModeBottomLeft;
myimageview.animationRepeatCount = 1;
[myimageview startAnimating];
}
它的工作正常..只是当我看着仪器/分配,它不释放内存。 它开始于8MB的'立场'动画,上升到32MB的fuesserechts,当我点击fuesselinks它上升到55MB(我有6更多的动画..所以更多,它只是崩溃) 当我确定[myimageview setAnimationImages:nil]; (在touchesBegan)每个setAnimationImages ...我仍然不释放内存。 Allocatoins总体字节数仍然增加。 当我设置[myimageview.animationImages发布];在(touchesbegan)每个setAnimationImages ...它甚至在几次触碰后崩溃。
感谢 克里斯
没有代码在哪里释放你的3个数组。你只创建一次或多次? – Vladimir 2010-08-10 13:40:32