Maison > Questions et réponses > le corps du texte
Exigence : après avoir obtenu les informations sur l'album, obtenez la première photo et la fonction self.editImageView
赋值显示.
问题 : 但是我现在想在getImageForCollectionView
完全结束后来为self.editImageView
赋值,那么问题来了,我如何才能判断getImageForCollectionView
est terminée ?
- (void)getImageForCollectionView{
_library = [[ALAssetsLibrary alloc] init];
self.photos = [NSMutableDictionary dictionary];
[_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
NSMutableArray *array = [NSMutableArray array];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[array addObject:result];
}
}];
[self.photos setValue:array forKey:[group valueForProperty:@"ALAssetsGroupPropertyName"]];
}
} failureBlock:^(NSError *error) {
}];
}
黄舟2017-05-16 13:21:19
Placez les opérations fastidieuses dans les threads non principaux et celles qui nécessitent des mises à jour de l'interface utilisateur dans le thread principal.
__weak typeof(self) weakSelf = self;
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// not in main block task
[weakSelf getImageForCollectionView];
dispatch_async(dispatch_get_main_queue(), ^{
// main block. change ui
NSLog(@"%@", weakSelf.photos);
});
});
EDIT :
- (void)getImageForCollectionView:(void(^)(void))callback {
_library = [[ALAssetsLibrary alloc] init];
self.photos = [NSMutableDictionary dictionary];
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
NSMutableArray *array = [NSMutableArray array];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[array addObject:result];
}
}];
[self.photos setValue:array forKey:[group valueForProperty:@"ALAssetsGroupPropertyName"]];
}
} failureBlock:^(NSError *error) {
}];
dispatch_async(dispatch_get_main_queue(), ^{
callback();
});
});
}
[self getImageForCollectionView:^{
// ...
NSLog(@"%@", self.photos);
}];