如何在AFNetworking Library中管理缓存内存

时间:2014-11-18 11:46:31

标签: ios caching memory-management afnetworking

我正在开发一个内容显示应用程序,其中有一个表格视图和一个与表格中每一行相对应的详细视图。

有12个类别可以加载内容。

我已经完成了应用程序,它运行正常。现在我需要管理缓存的内存消耗,因为我在运行时收到警告。我正在使用AFNetowking lib进行缓存。

应用程序的运行没有问题。我只需要做一些内存管理并应用代码。

我正在尝试为每个类别分配一些特定的内存和磁盘空间。

以下是我用来为每个类别分配ram和磁盘大小的代码。

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:15 * 512 * 1024
                                                        diskCapacity:10 * 1024 * 1024
                                                            diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];

xcode版本:6.1
taget ios版本:6.0
app:universal

1 个答案:

答案 0 :(得分:-1)

我认为建议不要设置缓存的大小。系统应该注意这一点。

我通常会使用常见的NSCache,只是根据URL存储数据包。然后将数据转换回任何图像/ xml /文本,无论我期待什么。

    // This should reference an NSCache instance
    _contentCache = [[NSCache alloc] init];

    // create a key for the request.
    cacheKey = [NSString stringWithFormat:@"%@|%@",uri,body];
    NSData *cacheData = [_contentCache objectForKey:cacheKey];

    // if its in the cache, just return it.
    if (cacheData) {
        return cacheData;
    }

    // Request the data here and return it.

_contentCache在AppDelegate中定义。这样我就可以从应用程序中轻松引用它。

    - (id) init {

        _appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        _contentCache = [_appDelegate contentCache];

        return self;
    }

我已将课程发布到GitHub。它不完整,但可用。

postmaster - GitHub