这是我的代码:
标题:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
UIImageView *imageView;
NSMutableArray *arrayWithImages;
}
- (IBAction)startAnimationid)sender;
- (IBAction)cleanMemoryid)sender;
@end
实现:
#import "ViewController.h"
@implementation ViewController
......
- (IBAction)startAnimationid)sender {
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
arrayWithImages = [[NSMutableArray alloc] initWithObjects:
[UIImage imageNamed"pic1"],
[UIImage imageNamed"pic2"],
[UIImage imageNamed"pic3"],
[UIImage imageNamed"pic4"],
[UIImage imageNamed"pic5"],
[UIImage imageNamed"pic6"],
[UIImage imageNamed"pic7"],
[UIImage imageNamed"pic8"],nil];
imageView.animationImages = arrayWithImages;
imageView.animationDuration = 3;
imageView.animationRepeatCount = 1;
[self.view addSubview:imageView];
[imageView startAnimating];
}
- (IBAction)cleanMemoryid)sender {
[arrayWithImages removeAllObjects];
[arrayWithImages release];
arrayWithImages= nil;
[imageView removeFromSuperview];
[imageView release];
imageView = nil;
}
@end
我有 ViewController 和它的 view 有两个按钮。第一个带有 startAnimation Action 的按钮,它创建 UIImageView 、 NSMutableArray 并在其上启动动画。第二个带有 cleanMemory Action 的按钮,用于清除我在 startAnimation 中创建的所有内容。
当我用 Activity Monitor 仪器启动 Profile 时,当我按下 startAnimation 按钮时,我的程序有 4 mb Real Mem 它更改为 16 mb Real Mem 并且在动画之后我按下 cleanMemory 按钮,但它具有相同的 16 mb Real Mem ...为什么?我不会将我的内存清理为起始值(4 mb Real Mem)。请问,你能解释一下我哪里有问题吗?
Best Answer-推荐答案 strong>
UIImage imageNamed: 缓存图像并按照自己的时间表释放内存。如果你不想缓存,那就是完全控制内存然后直接加载图像,而不是 UIImage imageNamed: 。
来自 Apple 文档:
This method looks in the system caches for an image object with the
specified name and returns that object if it exists. If a matching
image object is not already in the cache, this method loads the image
data from the specified file, caches it, and then returns the
resulting object.
你可以使用
+ (UIImage *)imageWithContentsOfFileNSString *)path
直接加载图片。
来自 Apple 文档:
This method does not cache the image object.
关于ios - UIImageView动画后如何清理内存,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/8947389/
|