2013-03-11 48 views
0

我有一個基本的iCarousel實現,我從核心數據存儲中提取圖像。我正在經歷與內存有關的崩潰,當你得到大量的圖像加載,我猜是預期的。問題是我不知道有什麼方法可以使用AsyncImageView庫,因爲對核心數據對象沒有NSURL崇敬。任何人都知道另一種方式來解決這個內存問題?iCarousel和來自coredata的圖像的內存問題

這裏是我的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

您可以放置​​一段與問題有關的代碼嗎? – 2013-03-12 04:19:44

+0

使用AsyncImageView並不難,但取決於你如何處理核心數據可能沒有幫助。知道(a)存儲圖像的核心數據實體是什麼樣的,以及(b)將這些圖像提供給iCarousel的代碼看起來是什麼樣子(可能是您的-carousel:viewForItemAtIndex:reusingView :,但真的是任何地方你從你的核心數據實體中獲取圖像)。 – 2013-03-12 18:30:01

+0

爲兩個評論添加代碼。謝謝您的幫助。 – Aaron 2013-03-13 00:15:06

回答

0

經過一段時間的研究發現,大容量內存的增長是由於coredata緩存而不是iCarousel造成的。這可以通過調用managedObjectContext上的reset來清除。