-(void) objectParsed_ListAllMedia:(NSDictionary *)dictionary
{
@try {
self.viewLoading.hidden=1;
[self.arrGaalleryMediaName removeAllObjects];
[self.arrMediaNames removeAllObjects];
if(self.arrOnlyServerImages == nil){
self.arrOnlyServerImages = [[NSMutableArray alloc] init];
}
if([self.arrOnlyServerImages count] >0){
[self.arrOnlyServerImages removeAllObjects];
}
if (dictionary==nil) {
[self.gridCollectionView reloadData];
return;
}
// Filter Array for Audio file
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"type != 'audio' "];
self.arrOnlyServerImages = [NSMutableArray arrayWithArray:[[dictionary objectForKey:@"objects"] filteredArrayUsingPredicate:predicate]];
// Remove duplicate Start //Read Meta Data and Duplicate from Download, Duplicate from upload START
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.memreas.myqueue", 0);
dispatch_async(backgroundQueue, ^{
NSMutableArray *arr = [NSMutableArray array];
NSMutableIndexSet * indexSet = [NSMutableIndexSet indexSet];
for (int i=0; self.assetAry.count>i; i++) {
ALAsset *result =self.assetAry[i];
ALAssetRepresentation *imageRep = [result defaultRepresentation];
NSDictionary * customMetaDic = [imageRep metadata][(NSString*)kCGImagePropertyIPTCDictionary];
if (customMetaDic) {
[self.arrMediaNames addObject:customMetaDic[(NSString*)kCGImagePropertyIPTCObjectName]?customMetaDic[(NSString*)kCGImagePropertyIPTCObjectName]:@""];
}else{
[self.arrMediaNames addObject:@""];
}
[self.arrGaalleryMediaName addObject:[self getFileNameWithExtensionFromPath:imageRep.url]];
}
for (int i=0; self.arrOnlyServerImages.count>i; i++) {
NSMutableDictionary* obj = self.arrOnlyServerImages[i];
NSMutableDictionary * dic2 = [NSMutableDictionary dictionaryWithDictionary:obj];
BOOL isArrMedia =[self.arrMediaNames containsObject:dic2[@"media_name"]];
BOOL isGallery =[self.arrGaalleryMediaName containsObject:dic2[@"media_name"]];
if (isArrMedia||isGallery) {
dic2[@"isDownloaded"] = [NSNumber numberWithBool:YES];
[indexSet addIndex: isArrMedia?[self.arrMediaNames indexOfObject:dic2[@"media_name"]] :[self.arrGaalleryMediaName indexOfObject:dic2[@"media_name"]]];
}else{
dic2[@"isDownloaded"] = [NSNumber numberWithBool:NO];
}
[arr addObject:dic2];
}
dispatch_async(dispatch_get_main_queue(), ^{
@try {
self.arrOnlyServerImages = arr;
[self.assetAry removeObjectsAtIndexes:indexSet];
[self.gridCollectionView reloadData];
}
@catch (NSException *exception) {
NSLog(@"%@",exception);
[self.gridCollectionView reloadData];
}
});
});
// Remove duplicate END //Read Meta Data and Duplicate from Download, Duplicate from upload END
[self.gridCollectionView reloadData];
[self.gridView.collectionView reloadData];
[self.location performSelector:@selector(stopActivity) withObject:nil afterDelay:2];
}
@catch (NSException *exception) {
NSLog(@"%@",exception);
}
}
이 코드를 실행하는 동안 메모리 압력 문제가 발생하고 응용 프로그램이 다운됩니다.메모리 압력 읽기 관련 문제 메타 데이터 및 중복 제거
기능은 다음과 같습니다
나는 서버 및 지역 자산에서 모든 이미지를로드하고 파일 이름으로 서로 일치하고 목록에서 중복 된 이미지를 제거, 그래서 한 번만 볼 것이다.
아무도 해결책이 있으니 도움주세요.
미리 감사드립니다.
코드에서 빠른 봐 - 내가 거기에'Mutable' 변수를 많이 참조하십시오. 코드를 최적화하고 대신 불변 변수를 사용하십시오. – Kampai
요구 사항이 그런 것이므로 변경 불가능한 요소가 필요합니다. 인덱스 실행 시간에 개체를 제거해야합니다. – Faizan
임시 변수'mutable'을 생성하고 작업을 수행 할 수 있습니다. 또한 변수'dic2'를 보아라. - 배열에'mutable' 사전을 추가하고있다. 대신 NSMutableDictionary에서 NSDictionary를 만들고 배열에 추가 한 후 NSMutableDictionary를 제거하십시오. – Kampai