获取“收到内存警告。级别= 1”

时间:2011-04-07 01:18:25

标签: objective-c cocoa-touch

我正在处理一些图像时收到此警告。我该怎么办?

谢谢!

        - (void)viewDidLoad {


            // Insere a view de thumbnails das paginas

            [self.view addSubview:pageThumbnails];
            self.pageThumbnails.frame = CGRectMake(0, 1024, 768, 210);

            // Paginas

            self.galeria =[[NSMutableArray alloc]init];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"001" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"002" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"003" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"004" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"005" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"006" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"007" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"008" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"009" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"010" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"011" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"012" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"013" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"014" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"015" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"016" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"017" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"018" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"019" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"020" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"021" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"022" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"023" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"024" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"025" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"026" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"027" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"028" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"029" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"030" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"031" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"032" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"033" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"034" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"035" ofType:@"jpg"]];
            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"036" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"037" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"038" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"039" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"040" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"041" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"042" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"043" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"044" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"045" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"046" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"047" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"048" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"049" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"050" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"051" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"052" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"053" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"054" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"055" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"056" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"057" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"058" ofType:@"jpg"]];

            [self.galeria addObject:[[NSBundle mainBundle] pathForResource:@"059" ofType:@"jpg"]];







            //Thumbs

            self.thumbsList =[[NSMutableArray alloc]init];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"001_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"002_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"003_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"004_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"005_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"006_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"007_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"008_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"009_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"010_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"011_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"012_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"013_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"014_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"015_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"016_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"017_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"018_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"019_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"020_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"021_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"022_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"023_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"024_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"025_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"026_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"027_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"028_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"029_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"030_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"031_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"032_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"033_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"034_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"035_thumb" ofType:@"jpg"]];\

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"036_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"037_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"038_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"039_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"040_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"041_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"042_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"043_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"044_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"045_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"046_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"047_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"048_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"049_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"050_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"051_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"052_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"053_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"054_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"055_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"056_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"057_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"058_thumb" ofType:@"jpg"]];

            [self.thumbsList addObject:[[NSBundle mainBundle] pathForResource:@"059_thumb" ofType:@"jpg"]];

            kNumberOfPages = [galeria count];

            // Comeca a contagem de thumbs de acordo com a array principal

            NSInteger thumbs = 0;

            while (thumbs < kNumberOfPages) {

                float e = 150*thumbs;
                thumbs++;

                // Cria o botao e a view

                UIView *thumbItemView = [[UIView alloc] init];
                UIButton *mathumb = [UIButton buttonWithType:UIButtonTypeCustom];

                NSString *mapURL = [[NSString alloc] initWithFormat:@"%@", [self.thumbsList objectAtIndex:thumbs-1]];

                NSData* imageData = [[NSData alloc]initWithContentsOfFile:mapURL];

                //NSData* imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:mapURL]];


                UIImage* image = [[UIImage alloc] initWithData:imageData];
                [mathumb setImage:image forState:UIControlStateNormal];


                // Seta a view da thumb
                thumbItemView.frame = CGRectMake(e, 0, 122, 122);

                UIColor *bkgColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"ThumbItemBackground.png"]];
                thumbItemView.backgroundColor = bkgColor;
                thumbItemView.opaque = NO;

                // Seta o tamanho do botao e insere ele na view
                mathumb.frame = CGRectMake(10, 10, 100, 100);
                [thumbItemView addSubview:mathumb];

                // Adiciona o resultado final das thumbs

                [thumbScroll addSubview:thumbItemView];

                // Tagea cada botao
                mathumb.tag = thumbs;

                // Adiciona a funcao neles de pegar a pagina
                [mathumb addTarget:self action:@selector(goToPage:) forControlEvents:(UIControlEvents)UIControlEventTouchDown];

                [thumbItemView release];

            }

            float s = thumbs*148;

            thumbScroll.contentSize = CGSizeMake(s, 50);
            thumbScroll.showsVerticalScrollIndicator = NO;
            thumbScroll.scrollsToTop = NO;

            //

            // view controllers are created lazily
            // in the meantime, load the array with placeholders which will be replaced on demand
            NSMutableArray *controllers = [[NSMutableArray alloc] init];
            for (unsigned i = 0; i < kNumberOfPages; i++) {
                [controllers addObject:[NSNull null]];
            }
            self.viewControllers = controllers;
            [controllers release];

            // a page is the width of the scroll view
            scrollView.pagingEnabled = YES;
            scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);
            scrollView.showsHorizontalScrollIndicator = NO;
            scrollView.showsVerticalScrollIndicator = NO;
            scrollView.scrollsToTop = NO;
            scrollView.delegate = self;

            pageControl.numberOfPages = kNumberOfPages;
            pageControl.currentPage = 0;

            NSString *qualPagina = [[NSString alloc] initWithFormat:@"Página %i de %i", pageControl.currentPage + 1, kNumberOfPages];
            [curentPageLabel setText:qualPagina];


            // Carrega as paginas

            [self loadScrollViewWithPage:0];
            [self loadScrollViewWithPage:1];

        }

        - (void)loadScrollViewWithPage:(int)page {
            if (page < 0) return;
            if (page >= kNumberOfPages) return;

            // replace the placeholder if necessary
            PageViewController *controller = [viewControllers objectAtIndex:page];
            if ((NSNull *)controller == [NSNull null]) {
                controller = [[PageViewController alloc] initWithPageNumber:page];
                [viewControllers replaceObjectAtIndex:page withObject:controller];

                // Seta a array de cada controller com os enderecos desta.

                controller.enderecos = self.galeria;

                [controller release];
            }

            // add the controller's view to the scroll view
            if (nil == controller.view.superview) {
                CGRect frame = scrollView.frame;
                frame.origin.x = frame.size.width * page;
                frame.origin.y = 0;
                controller.view.frame = frame;
                [scrollView addSubview:controller.view];
            }
        }

        - (void)scrollViewDidScroll:(UIScrollView *)sender {
            // We don't want a "feedback loop" between the UIPageControl and the scroll delegate in
            // which a scroll event generated from the user hitting the page control triggers updates from
            // the delegate method. We use a boolean to disable the delegate logic when the page control is used.
            if (pageControlUsed) {
                // do nothing - the scroll was initiated from the page control, not the user dragging
                return;

            }

            // Switch the indicator when more than 50% of the previous/next page is visible
            CGFloat pageWidth = scrollView.frame.size.width;
            int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
            pageControl.currentPage = page;


            // Arruma as paginas

            NSString *qlPage = [[NSString alloc] initWithFormat:@"Página %i de %i", page+1, kNumberOfPages];
            curentPageLabel.text = qlPage;
            //NSLog(@"QL Q TA %@", qlAtual.text);

            // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
            [self loadScrollViewWithPage:page - 1];
            [self loadScrollViewWithPage:page];
            [self loadScrollViewWithPage:page + 1];

            // A possible optimization would be to unload the views+controllers which are no longer visible

        }

        -  (void)goToPage:(id)sender {


            UIButton* btn = (UIButton *) sender;
            NSLog(@"Deu ein!, o sender eh %i", btn.tag);

            float t = btn.tag-1;
            float c = 768*t;

            scrollView.contentOffset = CGPointMake(c, 0);

            NSString *qualPagina = [[NSString alloc] initWithFormat:@"Página %i de %i", btn.tag, kNumberOfPages];
            [curentPageLabel setText:qualPagina];

        }

        // At the begin of scroll dragging, reset the boolean used when scrolls originate from the UIPageControl
        - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
            pageControlUsed = NO;
            [self closePanel];

        }

        // At the end of scroll animation, reset the boolean used when scrolls originate from the UIPageControl
        - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
            pageControlUsed = NO;

            //NSString *qlPage = [[NSString alloc] initWithFormat:@"%@ de %i", self.qlAtual.text, kNumberOfPages];

            //currentPageLabel.text = qlPage;

            //[qlPage release];

        }

        - (IBAction)changePage:(id)sender {
            int page = pageControl.currentPage;

            // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
            [self loadScrollViewWithPage:page - 1];
            [self loadScrollViewWithPage:page];
            [self loadScrollViewWithPage:page + 1];

            // update the scroll view to the appropriate page
            CGRect frame = scrollView.frame;
            frame.origin.x = frame.size.width * page;
            frame.origin.y = 0;
            [scrollView scrollRectToVisible:frame animated:YES];

            // Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above.
            pageControlUsed = YES;

        }

谢谢!

1 个答案:

答案 0 :(得分:2)

首先只加载您需要显示的图像。只在需要时加载其余部分。一旦图像消失,就会将它们从记忆中释放出来。

似乎你忘记发布许多变量,即mapURL,imageData,image bkgColor。