Dans cet extrait de code, le flux du programme passe à en dehors de la boucle d'abord, puis passe à l'intérieur du bloc
resultBlock:^(ALAsset * asset). Le code imprime d'abord le NSLog en bas puis exécute le bloc à l'intérieur de la boucle. Qu'est-ce qu'il se passe ici?Le flux du programme ne fonctionne pas
ALAssetsLibrary *lib=[ALAssetsLibrary new];
_sizeOfSelectedImage=0;
for (int i=0; i<assets.count; i++) {
ALAsset *asset=assets[i];
FileOP *fileMgr=[[FileOP alloc]init];
NSString *baseDir=[fileMgr GetDocumentDirectory];
//STORING FILE INTO LOCAL
[lib assetForURL:asset.defaultRepresentation.url
resultBlock:^(ALAsset *asset){
ALAssetRepresentation *repr = [asset defaultRepresentation];
CGImageRef cgImg = [repr fullResolutionImage];
NSString *fname = repr.filename;
UIImage *img = [UIImage imageWithCGImage:cgImg];
NSData *data = UIImagePNGRepresentation(img);
[data writeToFile:[baseDir stringByAppendingPathComponent:fname]
atomically:YES];
//FOR LOCAL URL OF THE IMAGE
//NSString *imageURL = [baseDir stringByAppendingPathComponent:fname];
//UIImage *myImg =[UIImage imageWithContentsOfFile:imageURL];
//NSLog(@"%@ URL OF IMAGE ",imageURL);
NSLog(@"Image %d has %d size",i,data.length);
_sizeOfSelectedImage +=data.length;
NSLog(@"%d is the size",_sizeOfSelectedImage);
}
failureBlock:^(NSError *error){
}];
}
NSLog(@"COPIED %lu FILE INTO LOCAL MEMORY AND TOTAL SIZE COPIED IS %d ",(unsigned long)assets.count,_sizeOfSelectedImage);
Je devine que le bloc est un bloc, il ne retourne pas d'abord. – klcjr89
C'est mon problème. Je ne sais pas pourquoi ça sort de la boucle avant d'exécuter le bloc. Et il revient à la boucle à nouveau. Je traverse des points de rupture. Le programme va à l'intérieur de la boucle for. Et là où le bloc commence, il sort de la boucle. Imprime NSLog en bas. Puis revient à la boucle. –
C'est comme ça que ça doit être. – klcjr89