ios – ALAssetPrivate超过其拥有的ALAssetsLibrary的生命周期

ios – ALAssetPrivate超过其拥有的ALAssetsLibrary的生命周期,第1张

概述我正在尝试获取photos.app中的所有图像,并将它们显示在UICollectionView中.我有这个代码检索图像: ALAssetsLibrary *al = [ViewController defaultAssetsLibrary];ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NS 我正在尝试获取photos.app中的所有图像,并将它们显示在UICollectionVIEw中.我有这个代码检索图像:
ALAssetsLibrary *al = [VIEwController defaultAssetsLibrary];ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result,NSUInteger index,BOol *stop){    if (result!=NulL) {        if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {            [imagesGotFromUserlibrary addobject:result];        }    }};ALAssetsLibraryGroupsEnumerationResultsBlocklibraryGroupsEnumeration = ^(ALAssetsGrouP* group,BOol* stop){    [group setAssetsFilter:[ALAssetsFilter allPhotos]];    if (group!=nil)    {        [group enumerateAssetsUsingBlock:groupEnumerAtion];    }    else    {        dispatch_async(dispatch_get_global_queue(0,0),^{            galleryCollectionVIEwController *otherController = [[galleryCollectionVIEwController alloc] init];            [otherController receiveImagesWithMutableArray:imagesGotFromUserlibrary];        });    }};al = [[ALAssetsLibrary alloc] init];[al enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos                       usingBlock:libraryGroupsEnumeration                     failureBlock:^(NSError *error){                         NSLog(@"ERROR: %@",error);                     }];

这是在vIEwDIDLoad然后:

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

这段代码是将数组发送到另一个控制器,将控制器设置为UICollectionVIEw.问题是,我收到错误“无效尝试访问其拥有的ALAssetsLibrary的生命周期”,如果我尝试使用NSLog我的数组,结果就像“ALAsset – Type:UnkNown”,URL:(null)“.

我抬头看了互联网,找到了一个解决方案.我应该添加这行代码,但它不起作用.代码是:

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

任何人都可以帮助我获取正确的图片网址来显示?

解决方法 解决方案是始终使用相同的库来对所有类的资产进行所有访问.上面显示的单例解决方案是好的 – 只要所有的类都调用defaultAssetsLibrary,并且没有人分配/ init自己的ALAssetlibrary. 总结

以上是内存溢出为你收集整理的ios – ALAssetPrivate超过其拥有的ALAssetsLibrary的生命周期全部内容,希望文章能够帮你解决ios – ALAssetPrivate超过其拥有的ALAssetsLibrary的生命周期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存