2012-10-11 49 views
-1

我存儲NSCache的數組。(我NSCache名字是aesCache)NSCache數據得到清除出

#define DEBUG_CACHE 1 
self.aesCache = [[NSCache alloc] init]; 
[self.aesCache setDelegate:self]; 

要保存NSCache

 - (void)saveObjects:(NSMutableArray*)savedObj { 
      [self saveValue:savedObj key:@"Objects"]; 
     } 

數組將其保存到NSCache。

- (void)saveValue:(id)value key:(NSString *)key { 
#ifdef DEBUG_CACHE 
    NSLog(@"#CACHE_MANAGER: SAVE Object"); 
    NSLog(@"#CACHE_MANAGER: KEY %@", key); 
#endif 
    if (value && key) { 
     [self.aesCache setObject:value forKey:key]; 
    } 
    else { 
#ifdef DEBUG_CACHE 
     NSLog(@"#CACHE_MANAGER: *** KEY VALUE SEEMS TO BE NIL ***"); 
#endif 
    } 

} 

要想從高速緩存陣列,我使用:

- (NSMutableArray*)getObjects { 
    array = [self getValue:@"Objects"]; 
    #ifdef DEBUG_CACHE 
     NSLog(@"#CACHE_MANAGER: Getting the 'Objects' from Cache"); 
    #endif 
     if (areas == nil) { 
    #ifdef DEBUG_CACHE 
     NSLog(@"#CACHE_MANAGER: No Objects cached. "); 
    #endif 


    } 
    return array; 
} 

我會從cache.But數組,如果我鎖定屏幕,然後打開它 緩存委託功能

- (void)cache:(NSCache *)cache willEvictObject:(id)obj { 
    #ifdef DEBUG_CACHE 
     NSLog(@"#CACHE_MANAGER: Going to evict the object"); 
    #endif 
} 

解僱了,我會得到空的結果。 我該如何解決這個問題。

請幫我一把。

回答

1

NSCache的目標是緩存objets,但它可以在任何時候刷新以保存內存。如果你想要一個更持久的緩存,你應該使用一個字典。

+0

謝謝..由於NSCache是​​線程安全的,我認爲這會比使用持久存儲更好。 –