2012-07-02 13 views
9

Natknąłem kodu, który wygląda tak:Na iOS gdzie jest przechowywana pamięć podręczna NSURLCache, jeśli diskPath: nil?

NSURLCache *URLCache = 
    [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 
            diskCapacity:1024 * 1024 * 5 
             diskPath:nil]; 

Problem polega na tym, że nie udało się znaleźć co jest oczekiwane zachowanie podczas diskPath przepuszcza nil. NSURLCache docs nie opisuję tej sytuacji w sposób jednoznaczny ani nie udało mi się tego obliczyć za pomocą własnych testów.

Gdzie jest przechowywana pamięć podręczna? czy ten kod jest powyżej błędu?

Dzięki.

Odpowiedz

12

Dzisiaj miałem trochę wolnego czasu, żeby przeprowadzić testy i znalazłem odpowiedź. Nic ciekawego, ale jeśli jesteś ciekawy:

Domyślnie iOS użyje bazy danych o nazwie Cache.db i, jak wspomniano @qegal, będzie przechowywany w domyślnej lokalizacji.

3

Od połączonego Doc:

w iOS, path to nazwa podkatalogu domyślnym katalogu pamięci podręcznej aplikacji, w którym przechowywane w pamięci podręcznej na dysku (podkatalog jest tworzony jeśli nie istnieje).

Mój najlepszy przypuszczenie byłoby, że jeśli path wynosi zero (co oznacza, że ​​nie określił podkatalog), pamięć podręczna po prostu być przechowywane w domyślnym katalogu pamięci podręcznej (a nie w podkatalogu). Nie mogę tego przetestować teraz, ponieważ mam problemy z komputerem. Zgaduję również, że byłby on przechowywany w domyślnym katalogu pamięci podręcznej, ponieważ jestem pewny, że otrzymasz ostrzeżenie lub błąd w czasie wykonywania lub podczas pisania kodu. Wiem, że gdybym napisał coś takiego:

[array writeToFile: nil atomically:NO]; 

bym się błąd jak nie podać ścieżkę do pliku, który powinien być zapisywany.

Mam nadzieję, że to pomoże!

+0

można udostępnić w jaki sposób określić, czy cache przechowywano w domyślny katalog? Mogę to wypróbować po mojej stronie. – jlmendezbonini

+0

@jlmendezbonini Masz na myśli sposób, w jaki zweryfikujesz przechowywanie pamięci podręcznej? – pasawaya

+0

Tak. Być może brakuje mi czegoś oczywistego, jak to zrobić. – jlmendezbonini

2

Zgodnie z iOS 8.2 plik Cache.db jest przechowywana w:

(App Folder)/Library/Caches/com.mycompany.appname/Cache.db 

Gdzie com.mycompany.appname to Bundle ID