나는 또 다른 질문을 올렸다. 이것은 ppl이 더 좋을 것이라고 말한 것처럼 오래된 코드입니다. 그러나 할당 된 메모리를 해제하는 해결책을 찾지 못했습니다.아이폰 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로 시작하고 fuesserechts의 경우 32MB까지 올라갑니다. 그리고 fuesselinks를 클릭하면 최대 55MB가됩니다. (나는 6 개의 애니메니티가 있습니다. 그래서 몇 가지 더 이상 충돌이 있습니다) [myimageview setAnimationImages : nil]; (touchesBegan에서) 각 setAnimationImages에 대한 ... 나는 여전히 메모리를 해제하지 않습니다. 모든 Allocatoins 전체 바이트는 여전히 증가합니다. 내가 [myimageview.animationImages release]를 설정하면; 각 setAnimationImages에 대해 (touchesbegan) ... 몇 번의 터치 후에도 충돌이 발생합니다. 당신이 가능하게 세 가지 배열을 클릭 할 때마다 초기화하고 있지만, 배열은 단지 메모리에 스택 있도록 그들을 석방 결코처럼
감사 크리스이 코드에서
3 개의 배열을 해제 할 코드가 없습니다. 한 번 또는 여러 번만 만드십니까? – Vladimir