0

一部の記事をキャッシュするために、NSCache を使用してカスタマイズされたクラスを実装します

問題が見つかりました。シミュレーターでホームボタンを押すと、キャッシュされたデータがなくなったようです

ネットワークからデータをロードしますが、キャッシュはロードしません

ホームボタンを押さない場合は、NSCache からデータを取得します

すなわち。私のキャッシュコード:

#import "ArticleCache.h"

@implementation ArticleCache

static NSCache *Cache;

+ (void)initialize
{
    [super initialize];

    Cache = [[NSCache alloc] init];
    [Cache setCountLimit: 1000];
}

+ (void)cacheResponse:(NSData *)response forURL:(NSURL *)URL
{
    [Cache setObject:response forKey:URL];
}

+ (NSData *)cachedResponseForURL:(NSURL *)URL
{
    return [Cache objectForKey:URL];
}

@end

// この質問はまるで詩のようで、少なくとも各行の最後の文字と最初の文字が同じであることに気づきませんでしたか。

4

3 に答える 3

0

NSData オブジェクトをキャッシュする代わりに、NSPurgeableData オブジェクトをキャッシュします。+ (void)cacheResponse:(NSData *)response forURL:(NSURL *)URL で、レスポンスから NSPurgeableData オブジェクトを作成して保存します。

+ (void)cacheResponse:(NSData *)response forURL:(NSURL *)URL
{
    [Cache setObject:[NSPurgeableData dataWithData:response] forKey:URL];
}
于 2014-03-13T04:02:23.593 に答える
0

これは、NSCache の予期される動作です。キャッシュを消去してサーバーからデータを再度取得するか、アプリがバックグラウンドに移行するときにデータを別の場所に保存するかは、ユーザーとユーザーの設計次第です。

于 2014-03-13T03:10:20.333 に答える