我有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
答案 0 :(得分:0)
经过一段时间的研究后发现大内存增长是由于coredata缓存而非iCarousel。可以通过在managedObjectContext上调用reset来清除它。