2012-02-27 5 views
5

Restkit 프레임 워크에서 캐싱을 사용 중지하는 데 어려움이 있습니다. 캐시 정책을 none으로 설정하려고했습니다. 아무런 효과가 없습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 당신이 클라이언트를 가지고 그래서 일단Restkit, 캐싱 사용 안 함

답변

7

, 명시 적으로 초기화 :

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가 스토리지 정책을 설정하여 새 캐시를 만들고을-경우 캐싱을 사용하지-영구 캐시입니다. 로깅 메시지에서보고있는 내용입니다.

+0

답장을 보내 주셔서 감사합니다. 난 그냥 시도하고 메시지를 여전히 "restkit.support : RKCache.m:178 경로에서 캐시 무효화 :" –

+0

그것이 캐싱을 제안 유일한 건가요? Charles 또는 다른 로깅 프록시를 사용하여 서버에 어떤 정보가 있는지 확인해 보셨습니까? – drewish

+0

프록시 로깅을 시도했지만 아무 것도 잘못되어 서버의 예상 데이터를 받았습니다. 사실, 아무것도 응용 프로그램의 동작에 잘못되어, 내 데이터가 좋다, 모든 것이 예상대로 간다. 그러나 로거가 계속 내게주는 메시지는 "경로에서 캐시 무효화 : ...."입니다. restkit처럼 캐시 기존 파일을 제거하려고 시도하지만 그렇게 할 수는 없습니다. 내가 말한 것처럼, 나는 그 행동이 성능이나 애플의 검증에 좋지 않다고 걱정한다. –