zoukankan      html  css  js  c++  java
  • iOS频繁打开相册崩溃: ALAssetsLibrary error

    iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.”

    http://stackoverflow.com/questions/13480611/has-anyone-experienced-crashes-when-using-alassetslibrary-in-a-background-thread

    原因:

    因为频繁的调用  

    [[ALAssetsLibrary alloc] init]

    即使你相册关闭, 但如果频繁调用这句话, 在ARC方式下, 估计iOS也没有及时清空内存, 

    就会导致 “Too many contexts. No space in contextList.”

     

    因此, 解决方式就是使用单例调用.

     

    + (ALAssetsLibrary *) defaultAssetsLibrary
    {
        static dispatch_once_t pred = 0;
        static ALAssetsLibrary *library = nil;
        dispatch_once(&pred, ^{
            library = [[ALAssetsLibrary alloc] init];
        });
        return library;
    }
    

     

     或者我用了 DBCamera 库, 它已经提供了一个方法, 直接用也行.

     ALAssetsLibrary *sharedLibrary = [[DBLibraryManager sharedInstance] defaultAssetsLibrary];
            [sharedLibrary enumerateGroupsWithTypes:ALAssetsGroupAll
                                         usingBlock:^(ALAssetsGroup *group, BOOL *stop)
             {
                 if (group)
                 {
                     NSString *nameStr = [group valueForProperty:ALAssetsGroupPropertyName];
                     
             }
                                 failureBlock:^(NSError *error)
             {
                 NSLog(@"failureBlock");
             }];
    

      

    测试后已经不那么容易崩溃了.

  • 相关阅读:
    虚拟主机支持apk
    pc显示,手机隐藏
    manjaro个人配置
    docker-compose部署elk
    docker-compose部署zk和kafka
    docker-compose部署redis-cluster
    ActiveMQ与RocketMQ对比
    dropbox离线安装包--需FQ
    C++实现中缀表达式转前、后缀
    运算符优先级
  • 原文地址:https://www.cnblogs.com/willbin/p/4205565.html
Copyright © 2011-2022 走看看