gpt4 book ai didi

ios - 从设备照片库中获取图像的内存警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:38 26 4
gpt4 key购买 nike

我使用以下代码从照片库中获取图像,在显示它之前调整它的大小正在接收内存警告。它还会由于内存压力而终止。

-(void)readImages:(int)getAlbumImages
{

imagesArray = [[NSMutableArray alloc]init];
allImagesArray = [[NSMutableArray alloc] init];

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != nil) {
if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {
[allImagesArray addObject:[result valueForProperty:ALAssetPropertyURLs]];

NSURL *url= (NSURL*) [[result defaultRepresentation]url];
[library assetForURL:url
resultBlock:^(ALAsset *asset) {
[imagesArray addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]];
[picsTbl reloadData];
[loadingView setHidden:YES];
}
failureBlock:^(NSError *error){ NSLog(@"test:Fail"); } ];
}

}
else if(result == NULL){
[loadingView setHidden:YES];
}
};

NSMutableArray *assetGroups = [[NSMutableArray alloc] init];
void (^ assetGroupEnumerator) ( ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
[group enumerateAssetsUsingBlock:assetEnumerator];
[assetGroups addObject:group];
NSLog(@"Number of assets in group :%ld",(long)[group numberOfAssets]);
NSLog(@"asset group is:%@",assetGroups);
}
NSLog(@"[group numberOfAssets] %d",[group numberOfAssets]);

};

assetGroups = [[NSMutableArray alloc] init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:assetGroupEnumerator
failureBlock:^(NSError *error) {NSLog(@"A problem occurred");}];
}

请帮忙。

最佳答案

很明显,您不能将所有照片作为全屏图像打开并存储在数组中,因为这会导致内存压力并最终导致内存故障,这会导致崩溃。

另外,声明

[picsTbl reloadData];

可能有问题,因为不清楚它是在哪个执行上下文中执行的,因为它是系统方法的完成处理程序。在这里,如果 picsTbl 是一个 UITableView 则必须是主线程。您应该确保确实如此。

您需要一种不同的方法来解决您的问题。具体而言,由于您可能会处理大量数据(给定受限设备),因此您必须确保一次只处理一个图像并且只在内存中保留一个图像。

您可以在这里获得一些关于如何顺序调用异步方法的想法 - 即有效地序列化异步方法:

Force async tasks to run in sequence

ios programming: Using threads to add multiple images to library

关于ios - 从设备照片库中获取图像的内存警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878847/

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