gpt4 book ai didi

ios - 当图像保存在核心数据的 Collection View 中时,应用程序因内存错误而崩溃

转载 作者:行者123 更新时间:2023-11-28 19:05:02 30 4
gpt4 key购买 nike

我正在将图像添加到核心数据的 Collection View 中,该核心数据从 uiimagepicker 获取图像。但是,当我将 6 张以上的图像加载到我的应用程序时,它会占用大部分内存,有时还会崩溃。除了获取图像并将它们直接放入具有 100x100 ImageView 的单元格中的 Collection View 之外,我没有对图像执行任何操作。有谁知道我可以做些什么来减少内存并使应用程序不崩溃?

代码片段:

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return _fetchedObjects.count;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
PhotosCollectionViewCell * cell = (PhotosCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"photoCell" forIndexPath:indexPath];
NSManagedObject *object = [_fetchedObjects objectAtIndex:indexPath.row];
cell.cellImage.image = [UIImage imageWithData:[object valueForKey:@"image"]];
return cell;
}

其他类:

    Photo * photoEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Photo" inManagedObjectContext:_context];
NSError * error;
NSData *imageData = UIImagePNGRepresentation(_image);
photoEntity.name = _nameField.text;
photoEntity.image = imageData;
photoEntity.imagedescription = _descriptionField.text;
if (![_context save:&error]) {
NSLog(@"There was a save error:%@",error);
}
[self dismissViewControllerAnimated:YES completion:nil];

谢谢

最佳答案

不要在 Core Data 中存储图像。它们占用太多内存!如果将其属性之一是图像的对象读入内存,则将该图像读入内存。因此,如果您有 100 个对象并获取它们的名称,那么您还会将 100 张图像加载到内存中,这可能会终止您的应用程序。

在 Core Data 中,存储对图像的引用。将实际图像存储在其他地方,例如在磁盘上。

关于ios - 当图像保存在核心数据的 Collection View 中时,应用程序因内存错误而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226102/

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