我在尝试禁用Restkit框架的缓存方面遇到了很大的困难。我已经尝试将缓存策略设置为none,但没有任何效果。请问正确的方法是什么?
因此,一旦您拥有客户端,并进行了明确的初始化:
RKClient *client = [RKClient clientWithBaseURL:url];
或者通过让对象管理器来处理:
RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url];
RKClient *client = om.client;
只需设置缓存策略即可:
client.cachePolicy = RKRequestCachePolicyNone;
你当时是在做什么吗?
更新: 由于日志消息是唯一令人担忧的事情,因此我决定追踪其来源。简而言之,忽略该消息并相信日志代理所告诉你的。
为了进行双重检查,我搜索了"Invalidating cache at path",在这两个位置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
RKRequestCachePolicy
:客户端设置此项,它控制何时查询缓存。RKRequestCacheStoragePolicy
:确定设备上的结果存储时间(从不、会话持续时间、永久)。RKRequestCacheStoragePolicyPermanently
创建新缓存。设置存储策略会清除之前的会话缓存,如果禁用缓存,则还会清除永久缓存。您在日志消息中看到的就是这个清除过程。