• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 如何提高判断力如何判断一个异步操作循环完全结束了呢?

如何提高判断力如何判断一个异步操作循环完全结束了呢?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了异步电机怎么判断烧毁,异步判断,如何提高判断力,提高判断力,如何提高自己的判断力等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何提高判断力 如何判断一个异步操作循环完全结束了呢?
描述:

需求 : 获取相册信息后获取第一张图片并为self.editImageView赋值显示.
问题 : 但是我现在想在getImageForCollectionView完全结束后来为self.editImageView赋值,那么问题来了,我如何才能判断getImageForCollectionView函数已经进行完毕?

 - (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) {
       
    }];
}

解决方案1:

将耗时的操作放在非主线程中,需要UI更新的放在主线程中。

__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);
}];


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何提高判断力如何判断一个异步操作循环完全结束了呢?

相关文章

  • 2017-06-05 关键帧动画瞬间被执行完了?
  • 2017-06-05 AVOSiOSSDK中,在数组中添加对象的addObject:forKey:功能没有作用
  • 2017-06-05 push一个ViewController时怎样隐藏自定义的tabbar?
  • 2017-08-23关于NSTimer的简单应用
  • 2017-06-05 swift中问号和叹号的作用
  • 2017-06-05 求助如何在MAC里使用gcc和openmp(已经下载了)
  • 2017-06-05 chromeframeUIView动态改变frame
  • 2017-06-05 新接手项目,60000+内存泄漏,如何破,有什么好方法!!!
  • 2017-06-05 关于AFN中AFNetworkActivityIndicatorManagerKVO的疑问?
  • 2017-06-05 如何通过runtime修改系统类的一个property属性的初始值?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 福原爱为什么会说中文为什么NimbusKit的中文资源那么少?
    • iOS从SVN上下载下来的项目,podfile中缺少三方库,工程也不报错??
    • 怎么用collectionView做一个横向无限循环滚动,而滚动后的item最终可以回到屏幕中间。
    • 余额宝最多能存多少钱一个手机最多能"检测"到多少个蓝牙列表?
    • AVAudioPlay模拟器可以播放录音,但是真机不行
    • ios7锁屏界面iOS在某界面强制横屏
    • 使用高德地图定位时,发现WIFI的时候可以显示正确位置,而在使用3G网络的时候定位出现了偏差
    • iOS之《Effective Objective-C 2.0》读书笔记(14)
    • 移动端产品,类似链家地图找房功能,如何设计保证当前可视区域内一定有房源?
    • psp模拟器怎么用xcode71怎么调整模拟器界面大小?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有