我有一个 iCarousel 的基本实现,我从核心数据存储中提取图像。当您加载大量图像时,我遇到了与内存相关的崩溃,正如我猜想的那样。问题是我不知道使用 AsyncImageView 库的任何方法,因为核心数据对象没有 NSURL 尊重。有谁知道另一种管理这个内存问题的方法?
这是我的 iCarousel viewForItemAtIndex
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
JournalEntry *journalEntry = (JournalEntry *)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
if (view == nil)
{
view = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 240.0f, 240.0f)] autorelease];
view.contentMode = UIViewContentModeScaleAspectFit;
}
[((UIImageView *)view) setImage:[journalEntry.image valueForKey:@"image"]];
NSLog(@"%i", index);
return view;
}
这里的参考是直接从 iPhoneCoreDataRecipes 示例代码中将图像添加到我的核心数据存储的代码。
@implementation ImageToDataTransformer
+ (BOOL)allowsReverseTransformation {
return YES;
}
+ (Class)transformedValueClass {
return [NSData class];
}
- (id)transformedValue:(id)value {
NSData *data = UIImagePNGRepresentation(value);
return data;
}
- (id)reverseTransformedValue:(id)value {
UIImage *uiImage = [[UIImage alloc] initWithData:value];
return [uiImage autorelease];
}
@end