1

NSCache は、オブジェクトを設定するたびにオブジェクトを削除しています! これはナッツです。

オブジェクトを追加する方法は次のとおりです。

    [self.inMemoryCache setObject:@{@"data" : data, @"filePath" : filePath} forKey:filePath];

これが私のデリゲート メソッド willEvictObject です。

-(void)cache:(NSCache *)cache willEvictObject:(id)obj
{
    NSLog(@"evicted obj %@",[obj description]);
    if ([obj isKindOfClass:[NSDictionary class]]) {
        NSData *data = [obj objectForKey:@"data"];
        NSString *filePath = [obj objectForKey:@"filePath"];
        [data writeToFile:filePath atomically:YES];
    }else if ([obj isKindOfClass:[NSArray class]]){
        NSArray *viewControllerNames = obj;
        [viewControllerNames writeToFile:[UINavigationController pathToData] atomically:YES];
    }
}

オブジェクトをキャッシュに追加するたびに、オブジェクトが削除されます。本当に奇妙です。

何か案は?これが私がそれをどのように割り当てているかです:

    navigationController.inMemoryCache = [[NSCache alloc] init];
    navigationController.inMemoryCache.delegate = navigationController;

ありがとう!

4

0 に答える 0