0

我有一个 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
4

1 回答 1

0

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

于 2013-04-04T22:53:27.933 回答