Restkit,禁用caching

我很难尝试在Restkit框架中禁用caching。 我已经尝试将caching策略设置为none,根本没有任何效果。 什么是正确的方法来做到这一点?

所以一旦你有一个客户端,明确地初始化它:

RKClient *client = [RKClient clientWithBaseURL:url]; 

或者让对象pipe理器执行它:

 RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url]; RKClient *client = om.client; 

这应该是简单的设置caching策略的问题:

 client.cachePolicy = RKRequestCachePolicyNone; 

那是你在做什么?

更新:由于日志消息是唯一令人担忧的事情,所以我决定追踪它的源代码。 tl; dr版本将忽略该消息,并相信日志logging代理告诉你的是什么。

为了进行双重检查,我search了“在path上caching失效”,并在两个位置find了它RKCache invalidateSubDirectory:RKCache invalidateAll并在它们上设置断点。 这里是我的一些代码的部分堆栈跟踪:

 #0 0x000e6c66 in -[RKCache invalidateSubDirectory:] at RestKit/Code/Support/RKCache.m:189 #1 0x0006b767 in -[RKRequestCache invalidateWithStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:237 #2 0x0006b958 in -[RKRequestCache setStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:253 #3 0x00069abf in -[RKRequestCache initWithPath:storagePolicy:] at RestKit/Code/Network/RKRequestCache.m:60 #4 0x000586f3 in -[RKClient baseURLDidChange:] at RestKit/Code/Network/RKClient.m:339 #5 0x000589ce in -[RKClient observeValueForKeyPath:ofObject:change:context:] at RestKit/Code/Network/RKClient.m:373 #6 0x0183cd91 in NSKeyValueNotifyObserver () #7 0x0183c895 in NSKeyValueDidChange () #8 0x0182233e in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] () #9 0x01844a82 in _NSSetObjectValueAndNotify () #10 0x00057404 in -[RKClient initWithBaseURL:] at RestKit/Code/Network/RKClient.m:176 #11 0x00056df3 in +[RKClient clientWithBaseURL:] at RestKit/Code/Network/RKClient.m:130 

我从中学到的东西是有两个控制caching的枚举:

  • RKRequestCachePolicy是你在客户端上设置的,它控制着什么时候查询caching。
  • RKRequestCacheStoragePolicy ,用于确定结果在设备上存储的时间(从不,持续时间,永久性)。

作为设置客户端的一部分,当设置URL时,客户端使用RKRequestCacheStoragePolicyPermanently创build新的caching,设置存储策略涉及清除以前的会话caching,并且如果caching被禁用,则永久caching。 这就是你在日志消息中看到的清除。