gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 11:01:08 26 4
gpt4 key购买 nike

我正在尝试获取 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];
}

}
};

ALAssetsLibraryGroupsEnumerationResultsBlock
libraryGroupsEnumeration = ^(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;
}

这段代码将一个数组发送到另一个 Controller ,它将图像设置到我的 UICollectionView。问题是我收到错误“无效尝试访问超过其拥有的 ALAssetsLibrary 的生命周期”,如果我尝试 NSLog 我的数组,结果类似于“ALAsset - 类型:未知,URL:(空)”。

我在网上查了一下,找到了解决办法。我应该添加这行代码,但它不起作用。代码是:

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

谁能帮我获取要显示的正确图片 URL?

最佳答案

解决方案是始终使用相同的库来访问所有类中的 Assets 。您在上面显示的单例解决方案很好 - 只要您的所有类都调用 defaultAssetsLibrary 并且它们都没有分配/初始化它们自己的 ALAssetsLibrary

关于ios - ALAssetPrivate 超过其拥有的 ALAssetsLibrary 的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com