清除Xcode中的缓冲区内存

时间:2013-02-08 08:32:55

标签: ios xcode ipad cocoa-touch

我在滚动视图中创建了一个包含图像视图的应用 我有3个类,每个类将图像添加到图像视图中。

当我按下按钮1时,它会调用class1并填充Class1images(从image001到image200)。
当我按下button2时,它会调用class2并填充Class2images(从image201到image400)

问题是当我调用class1时,图像视图显示class1images(从image001到image200) 在调用class1之后,我调用class2 当我调用class2时,我的图像视图无法显示class2images(从image201到image400) 但是,class1Images(从image001到image200)仍然在应用程序中。

我认为class1图像仍在内存中,因此class2图像无法添加到内存中 当我调用class2时,我想删除class1images 当我调用下一个类时,它将删除内存中的旧图像并替换为新图像。

但是,我的应用程序是用故事板和ARC开发的 因此,我无法在ARC模式下手动释放内存 有没有办法删除内存中的旧图像?

- (void)viewDidLoad{
[super loadView];  
self.view.backgroundColor = [UIColor grayColor];

ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
ScrollView.pagingEnabled = YES;

NSInteger numberOfViews = 200;
for (int i = 0; i < numberOfViews; i++) {
    CGFloat xOrigin = i * self.view.frame.size.width;

    // Create a UIImage to hold Info.png
    UIImage *image1  = [UIImage imageNamed:@"Image001.jpg"];
    UIImage *image2 = [UIImage imageNamed:@"Image002.jpg"];
:
:
UIImage *image200 = [UIImage imageNamed:@"Image200.jpg"];

    NSArray *images = [[NSArray alloc] initWithObjects:image1,image2, . . . ,image200,nil];

    ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0,self.view.frame.size.width, self.view.frame.size.height)];

    [ImageView setImage:[images objectAtIndex:i]];

    [ScrollView addSubview:ImageView];}    

ScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews,self.view.frame.size.height);

[self.view addSubview:ScrollView];}

2 个答案:

答案 0 :(得分:0)

将imageview的animationImages属性设置为新数组将删除olf数组并为新数组设置动画。

要110%安全调用stopAnimation,设置图像,调用startAnimation

答案 1 :(得分:0)

我认为你的滚动视图没有得到清理。您需要从scrollView中删除以前的图像,然后从下一个类添加图像。

尝试实现类似这样的功能,从scrollview中删除图像,然后在按钮上添加其他图像

for(UIView *subView in self.ScrollView.subviews)
{
    if([subView isKindOfClass:[UIImageView class]])
            [subView removeFromSuperview];
}

希望可以帮到你。试试吧。