에 UICollectionView
의 앱을 개발 중입니다.스크롤 할 때 UICollectionView에 메모리 경고가 발생했습니다.
이 CollectionView
갤러리는 각 행마다 3 개의 이미지가 있습니다.
나는 30 개 사진, 첫 번째 URL 및 코드 그룹의 서버에서 이미지를 얻고, 셀이 cellForItemAtIndexPath
에 표시 될 것입니다 때 비동기 그 사진을 다운로드 SDWebImage Library
를 사용합니다. 매 30 장의 그림마다 다시 웹 서비스를 호출하고 30 장의 그림을 제한 및 오프셋으로 더 전송합니다. 이것은 100 번 발생할 수 있으며, 3000 장의 사진이있는 프로파일이 있습니다.
내 문제는 내 iPhone 4에서 앱을 시작한 후 빠른 스크롤을 한 후 Received Memory Warnings
이 시작되고 몇 가지 경고가 발생하면 앱이 다운됩니다. 시뮬레이터에서 동일한 테스트를 수행하면 아무런 문제가 발생하지 않습니다.
I 30 개 이미지를 다운로드 할 때마다 I는 CollectionView
데이터 reload
collectionView
를 처리하는 결과에 NSMutableArray *data property
어레이를 추가한다. 악기를 배분하여 사용하려했지만 무슨 일이 일어나고 있는지 이해하는 것은 매우 어렵습니다.
이
내가 세포-(UICollectionViewCell *)collectionView:(LZProfileImagesCollectionView *)aCollectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if(aCollectionView == self.imagesCollectionView){
if([self.data count] - 12 == indexPath.row){
self.photoOffset += 30;
[self loadUserData];
}
LZProfileCollectionViewCell * cell = (LZProfileCollectionViewCell *)[imagesCollectionView dequeueReusableCellWithReuseIdentifier:ImageCollectionCellIdentifier forIndexPath:indexPath];
Image *image =(self.data)[indexPath.row];
[cell configureCellWithImage:image];
return cell;
}
return nil;
}
을 만드는 데 사용하는 코드입니다 그리고 LZProfileCollectionViewCell
셀에 내가 가진이 하나 : 나는 3 후 SDWebImage
에서 setImageWithURL
을 촬영 한
-(void)configureCellWithImage:(Image *)image
{
[self setNeedsDisplay];
// Imagen
NSString *imageUrl = [kBaseURL stringByAppendingString:image.imageStringUrl];
[self.pictureImg setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:kDefaultLoadingImage]];
[self.pictureImg setContentMode:UIViewContentModeScaleAspectFit];
}
분 기기 (통계)에서이 스냅 샷을 얻습니다.
당신은 당신이 결국 메모리가 부족하려고 많은 이미지를 캐시 그래서 일단는 배열에 미리
타사 라이브러리를 사용하는 경우 적절한 캐싱을 위해 구성했는지 확인해야합니다. 또한 메모리를 비울 필요가있을 때 캐시를 지울 책임이 있습니다. Allocations 장비는 메모리가 사용되는 위치에 대해 무엇을 말합니까? –
일반적인 요청에는'AFNetworking'을 사용하고 이미지 비동기 다운로드에는'SDWebImage'를 사용합니다. Instruments 할당에서 무엇을보고 싶습니까? 호출 트리, 할당 목록? – croigsalvador
'Statistics'->'Object Summary'로 시작하여 가장 상위의'Live Bytes' 객체를보십시오. 또는 스크린 샷을 게시하십시오. 일부 힙 샷도 찍으십시오. –