2012-02-27 17 views
5

Restkit çerçevesinde önbelleğe almayı devre dışı bırakmayı denemek için gerçekten çok zor bir zamanım var. Önbellek ilkesini hiç bir etki bırakmaya çalışıyorum. Bunu yapmanın doğru yolu nedir? Bir müşterim var Böylece bir kezRestkit, önbelleğe almayı devre dışı bırak

cevap

7

ya açıkça başlatılıyor:

RKClient *client = [RKClient clientWithBaseURL:url]; 

veya nesne yöneticisini sağlayarak bunu:

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

Sadece ayarı basit bir mesele olmalı önbellek ilkesi:

Yaptığınız şey bu muydu?

Güncelleme: Günlüğe kaydetme mesajım endişe duyduğum tek şey olduğu için kaynağını bulmaya karar verdim. Tl; dr sürümü, mesajı görmezden gelmek ve oturum açma proxy'sinin size söylediklerine güvenmektir.

Ben "yolda önbelleği yürürlükten" için arama ve üzerlerinde iki konum RKCache invalidateSubDirectory: ve RKCache invalidateAll ve set molası noktalarında buldum tekrar kontrol etmek. İşte benim kod bazı kısmi yığın izleme: Bu bakarak öğrendim Ne

#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 

önbelleğe alma denetlemek iki çeteleler olmasıdır:

Eğer istemci üzerinde ayarlanmış budur
  • RKRequestCachePolicy, önbellek istendiğinde kontrol eder. Sonuçların cihazda ne kadar süre saklandığını belirleyen (hiçbir zaman, oturum süresi, kalıcı)
  • . Bir URL istemcisi ayarlandığında, istemci kurma parçası olarak

önceki seans önbelleği boşaltarak içerir RKRequestCacheStoragePolicyPermanently depolama politikası ayarlanırken ile yeni bir önbellek oluşturur ve -eğer önbelleğe alma devre dışı kalıcı önbelleğidir. Kayıt mesajlarında gördüğünüzü temizliyor.

+0

Cevabınız için teşekkür ederiz. Sadece denedim, ve hala "restkit.support:RKCache.m:178 yolunda önbellek geçersiz kılma" mesajı var: " –

+0

Bu önbelleğe almayı öneren tek şey bu mu? Sunucuya ne olduğunu görmek için Charles'ı veya başka bir günlük proxy'yi denediniz mi? – drewish

+0

Proxy günlüğünü denedim, hiçbir şey ters gitmiyor, sunucunun beklenen verilerini aldım. Aslında, uygulamanın davranışında hiçbir şey ters gitmiyor, verilerim iyi, her şey beklendiği gibi gidiyor. Ancak, logger'ım bana "Önbellek yolunda geçersiz kılma: ...." mesajlarını vermeye devam ediyor. Restkit, varolan dosyayı önbelleğe almaya çalışmış gibi görünebilir, ancak yapamaz. Söylediğim gibi, bu eylemlerin performans veya Apple doğrulama için iyi olmadığından endişeleniyorum. –

İlgili konular