2011-04-07 71 views
0

当我处理一些图像时,我得到这个警告。我能做什么?获取“接收到的内存警告级别= 1”

谢谢!

 - (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; 

     } 

谢谢!

+0

没有人?我在这里沮丧 – 2011-04-07 01:36:22

+0

我有类似的问题。我加载了一堆图像并获得了内存警告。有时它崩溃,有时不崩溃。大多数情况下,当它崩溃时,我没有从调试器(4.3)中得到任何回报。 特雷斯沮丧。你不是一个人。 – 2011-04-09 08:44:41

+0

绝对如此。但即时获得1级警告。 – 2011-04-11 15:02:34

回答

2

首先只加载需要显示的图像。只有在需要时才加载剩下的部分。只要图像消失就从内存中释放它们。

此外,您似乎忘了释放许多变量,即mapURL,imageData,image bkgColor。

+0

这就是没有人想听到的答案......但这就是答案:) – 2011-04-11 15:33:09