2012-07-02 11 views
9

मैं कोड है कि इस तरह दिखता है का सामना करना पड़ा:आईओएस पर NSRLCache कैश संग्रहीत है यदि diskPath: nil?

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

समस्या यह है कि मैं नहीं किया है क्या अपेक्षित व्यवहार जब diskPath शून्य पारित हो जाता है खोजने के लिए सक्षम किया गया। NSURLCache docs स्पष्ट रूप से इस स्थिति का वर्णन नहीं करते हैं और न ही मैं इसे अपने स्वयं के परीक्षण के साथ समझने में सक्षम हूं।

कैश कहां संग्रहीत किया जाता है? या वह कोड एक बग के ऊपर है?

धन्यवाद।

उत्तर

12

मेरे पास कुछ परीक्षण करने के लिए आज कुछ खाली समय था और जवाब मिला। कुछ भी नहीं रोमांचक लेकिन यदि आप उत्सुक हैं:

डिफ़ॉल्ट iOS रखकर Cache.db नाम के एक डेटाबेस का उपयोग करें और के रूप में @qegal उल्लेख किया है, डिफ़ॉल्ट स्थान के तहत संग्रहीत किया जाएगा।

3

अपने लिंक किए गए दस्तावेज़ में:

आईओएस में, path आवेदन के डिफ़ॉल्ट संचय निर्देशिका की एक उपनिर्देशिका जिसमें ऑन-डिस्क कैश स्टोर करने के लिए (अगर यह मौजूद नहीं है उपनिर्देशिका बनाई गई है का नाम है)।

मेरे सर्वोत्तम अनुमान होगा कि अगर path नहीं के बराबर है (अर्थात आपका उप-निर्देशिका निर्दिष्ट नहीं किया है), कैश बस (और उप-निर्देशिका के नहीं) डिफ़ॉल्ट संचय निर्देशिका में संग्रहीत किया जाएगा। मैं अभी इसका परीक्षण नहीं कर सकता, क्योंकि मेरे पास कुछ कंप्यूटर समस्याएं हैं। मैं यह भी अनुमान लगा रहा हूं कि इसे डिफ़ॉल्ट कैश निर्देशिका में संग्रहीत किया जाएगा क्योंकि मुझे यकीन है कि आपको रनटाइम पर या जब आप कोड लिख रहे हों तो आपको कुछ प्रकार की चेतावनी या त्रुटि मिलेगी। मैं जानता हूँ कि अगर मैं कुछ इस तरह लिखा है:

[array writeToFile: nil atomically:NO]; 

मैं के रूप में मैं पथ फाइल करने के लिए लिखा जाना चाहिए जो करने के लिए निर्दिष्ट नहीं किया है एक त्रुटि मिलेगा।

आशा है कि इससे मदद मिलती है!

+0

आप आप कैसे तय करेगा कि क्या कैश में जमा हो गया था साझा कर सकते हैं डिफ़ॉल्ट निर्देशिका? मैं इसे अपने अंत में कोशिश कर सकता हूं। – jlmendezbonini

+0

@jlmendezbonini क्या आपका मतलब है कि आप कैसे सत्यापित करेंगे कि कैश बिल्कुल संग्रहीत किया गया था? – pasawaya

+0

हां। मुझे ऐसा करने के बारे में कुछ स्पष्ट याद आ रहा है। – jlmendezbonini

2

iOS 8.2 के तहत Cache.db फ़ाइल में संग्रहीत किया जाता है:

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

com.mycompany.appname कहाँ अपने बंडल आईडी है

संबंधित मुद्दे