Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Restkit,禁用缓存_Ios_Restkit - Fatal编程技术网

Ios Restkit,禁用缓存

Ios Restkit,禁用缓存,ios,restkit,Ios,Restkit,我很难在Restkit框架中禁用缓存。 我尝试将缓存策略设置为“无”,但没有任何效果。正确的方法是什么?因此,一旦有了客户端,可以显式初始化它: RKClient *client = [RKClient clientWithBaseURL:url]; 或者让对象管理器执行此操作: RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url]; RKClient *client = om.client; 只需设置缓存策

我很难在Restkit框架中禁用缓存。
我尝试将缓存策略设置为“无”,但没有任何效果。正确的方法是什么?

因此,一旦有了客户端,可以显式初始化它:

RKClient *client = [RKClient clientWithBaseURL:url];
或者让对象管理器执行此操作:

RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url];
RKClient *client = om.client;
只需设置缓存策略即可:

client.cachePolicy = RKRequestCachePolicyNone;
你就是这么做的吗

更新:因为日志信息是唯一让我担心的事情,所以我决定追踪它的来源。tl;dr版本将忽略该消息并相信日志代理告诉您的内容

为了仔细检查,我搜索了“在路径上使缓存无效”,并在两个位置找到了它
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
    确定结果在设备上存储的时间(从不、会话持续时间、永久)

作为设置客户端的一部分,当设置URL时,客户端将使用
RKRequestCacheStoragePolicyPermanently
创建一个新缓存。设置存储策略包括清除以前的会话缓存,如果禁用缓存,则创建永久缓存。这就是您在日志消息中看到的清除。

感谢您的回复。我刚刚尝试过,但仍然收到消息“restkit.support:RKCache.m:178在路径处使缓存无效:”这是唯一表明它正在缓存的东西吗?您是否尝试过使用Charles或其他日志代理查看服务器发生了什么?我尝试过代理日志记录,没有出现任何问题,我确实收到了服务器的预期数据。事实上,应用程序的行为没有问题,我的数据很好,一切都如预期的那样。但是,我的记录器一直给我那些消息“在路径处使缓存无效:…”。看起来restkit试图删除缓存现有文件,但无法。如前所述,我只是担心这些行为不利于性能或苹果验证。我只是用更多信息更新了我的答案。简短的版本是,它正在做它应该做的事情,没有必要担心。你为什么不想要任何缓存呢?第一个:我需要调试,看到里面满是这样的信息真让人恼火。第二个:应用程序的很大一部分(大约60-70%)是实时工作的。