iCarousel的内存问题和coredata的图像

时间:2013-03-11 23:55:51

标签: ios core-data icarousel

我有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

1 个答案:

答案 0 :(得分:0)

经过一段时间的研究后发现大内存增长是由于coredata缓存而非iCarousel。可以通过在managedObjectContext上调用reset来清除它。