tôi thêm một CAKeyframeAnimation đến lớp của một ImageView cho đại diện cho hình ảnh động của một hình ảnh:Loại bỏ CAKeyframeAnimation không giải phóng bộ nhớ
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
animation.values = arrayOfImages;
[animation setRemovedOnCompletion:YES];
animation.delegate = self;
[animation setValue:delegate forKey:@"AnimatedImageViewDelegate"];
animation.repeatCount = repeatCount;
animation.fillMode = kCAFillModeForwards;
animation.calculationMode = kCAAnimationDiscrete;
[animation setValue:animationName forKey:@"name"];
Khi tôi muốn bắt đầu các hoạt hình tôi gọi:
animation.duration = duration;
[self.layer addAnimation:animation forKey:animationName];
[self.layer setContents:[animation.values lastObject]];
Khi hoạt ảnh kết thúc, tôi muốn xóa hoàn toàn nó và giải phóng bộ nhớ của nó.
[self.layer removeAllAnimations];
[self.layer removeAnimationForKey:animationName];
Thực hiện việc này và sử dụng Thiết bị giám sát hoạt động, bộ nhớ sẽ không bị xóa trừ khi tôi phát hành hình ảnh hoàn chỉnh.
Làm cách nào để phát hành bộ nhớ hoạt ảnh đó mà không hủy UIImageView ???
bạn có thể thử mang nó vào autoreleasepool – SAKrisT