2011-08-23 14 views
21

मेरे आईफोन ऐप में मैं लोडिंग समय बचाने के लिए कुछ संपीड़ित फ़ाइलों के कच्चे डेटा को कैशिंग कर रहा हूं। लेकिन वे फ़ाइलें अद्यतन में बदल सकती हैं।ऐप अपडेट पर <Application_Home>/लाइब्रेरी/कैश स्पष्ट होंगे?

ऐप अपडेट होने पर मुझे आईओएस स्पष्ट/लाइब्रेरी/कैश होगा या मुझे इसे साफ़ करने की आवश्यकता है?

उत्तर

46

लघु:

Will iOS clear /Library/Caches for me when the app is updated नहीं

क्या यह संभव है आईओएस एक अद्यतन के दौरान स्पष्ट सब कुछ या Application_Home/Library/Caches के कुछ हिस्सों करता है कि? हां

or I need to clear it myself? आपको यह सुनिश्चित करने की ज़रूरत है कि आप क्या साफ़ करना चाहते हैं।

दोनों स्थितियों के लिए तैयार रहें।

आप कैसे जानते हैं कि आपका ऐप अपडेट हो गया है या नहीं? iOS Application Update Test

लांग देखें:

फ़ाइलें सहेजी गयी आवेदन अद्यतन के दौरान कोई उपयोगकर्ता एक आवेदन अद्यतन डाउनलोड करता है, आइट्यून्स एक नया आवेदन निर्देशिका में अद्यतन स्थापित करता है। इसके बाद पुरानी स्थापना को हटाने से पहले उपयोगकर्ता की डेटा फ़ाइलों को पुराने स्थापना से नई एप्लिकेशन निर्देशिका में स्थापित किया जाता है।निम्नलिखित निर्देशिकाओं में से फ़ाइलें की गारंटी दी जाती अद्यतन प्रक्रिया के दौरान संरक्षित किया:

  • Application_Home/दस्तावेज़
  • Application_Home/लाइब्रेरी

हालांकि अन्य उपयोगकर्ता निर्देशिकाओं में से फ़ाइलें भी पर ले जाया जा सकता है, तो आप को अद्यतन के बाद उपस्थित होने पर भरोसा नहीं करना चाहिए।

सेब प्रलेखन से: The Application Runtime Environment - Backup and Restore

Application_Home/Library/Caches इस निर्देशिका उपयोग किसी भी आवेदन विशेष समर्थन फ़ाइलों है कि आप आवेदन के की शुरूआत या के बीच बनाए रखना चाहते लिखने के लिए आवेदन अपडेट के दौरान। आपका एप्लिकेशन आमतौर पर इन फ़ाइलों को जोड़ने और हटाने के लिए ज़िम्मेदार है। यह आवश्यक फ़ाइलों को के रूप में फिर से बनाने में सक्षम होना चाहिए क्योंकि आईट्यून्स डिवाइस की पूर्ण बहाली के दौरान उन्हें हटा देता है। आईओएस 2.2 और बाद में, इस निर्देशिका की सामग्री का समर्थन iTunes द्वारा का बैक अप नहीं लिया गया है।

सेब प्रलेखन से: The Application Runtime Environment - The File System (daveoncode)

यहाँ जब यह एक "अद्यतन" के दौरान कैश को साफ़ करता है का एक उदाहरण: आप एप्लिकेशन एक्स V1.0 स्थापित करें। इसे एक बार लंच करें और कुछ और करना शुरू करें। आईओएस malfunctions और बहाल करने की जरूरत है। डेवलपर वी 1.1 जारी करता है। आप अपने मैक पर आईट्यून्स में ऐप अपडेट करते हैं। आप आईट्यून्स के माध्यम से अपना डिवाइस बहाल करते हैं। iTunes V1.1 इंस्टॉल करता है। उपयोगकर्ता आपके ऐप को लॉन्च करता है। आपके ऐप को सूचित नहीं किया गया है कि इनमें से कोई भी सामान हुआ लेकिन Application_Home/Library/Cache में सभी फ़ाइलें चली गईं (iTunes removes them during a full restoration of the device)।

वहां वास्तव में महत्वपूर्ण जानकारी: It should also be able to re-create these files as needed। केंडल की तरह यह भी बताया गया कि यह एक कैश है, इसलिए किसी भी समय ऑपरेटिंग सिस्टम द्वारा फ़ाइलों को हटाया जा सकता है। इसलिए हर बार जब आप Application_Home/Library/Caches से कोई भी फ़ाइल लोड करते हैं तो आपको इस मामले के लिए खाता लेना होगा कि फ़ाइल अब और नहीं है (केंडल इस पर छू गया)।

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
if(![fileManager fileExistsAtPath:[cachePath stringByAppendingPathComponent:@"myfile.zip"]]) { 
    //create it, copy it from app bundle, download it etc. 
} 
//start using it 
0

पूरे बिंदु/कैश यह है कि सिस्टम किसी भी समय संग्रहीत डेटा को साफ़ कर सकता है - यदि इसकी आवश्यकता हो। आपको उस निर्देशिका को साफ़ करने के बारे में चिंता नहीं करनी चाहिए।

+0

है, वहाँ है कोई बात नहीं। समस्या यह है कि, यदि अद्यतन के बाद कैश साफ़ नहीं है, तो कुछ कैश की गई फ़ाइलें बदल सकती हैं, और पुरानी फ़ाइल का उपयोग अभी भी किया जाएगा। – fbafelipe

+0

यह कोई समस्या नहीं है यदि आप ऐप संस्करण संख्या को अपनी कैश की गई फ़ाइलों के साथ किसी तरह से जोड़ते हैं। –

9

सुरक्षित होने के लिए, आपको इसे स्वयं साफ़ करना चाहिए। ऐसा कोई प्रलेखन प्रतीत नहीं होता है कि यह आपके लिए साफ़ कर दिया जाएगा, इसलिए यदि अब भी ऐसा होता है तो आप इसे जारी रखने पर भरोसा नहीं कर सकते हैं।

+0

असल में, डेवोनकोड (नीचे) ऐप्पल से कुछ दस्तावेज मिला। लेकिन सिफारिश अभी भी अच्छी है। – picciano

+0

@picciano: वह दस्तावेज यह नहीं बताता है कि ऐप्पल ऐप के अपग्रेड पर कैश को साफ़ कर सकता है या नहीं।यह सिर्फ कहता है कि आपका ऐप फाइलों के प्रबंधन के लिए "आम तौर पर" ज़िम्मेदार है, और एक बार निर्दिष्ट करता है कि फ़ाइलों को वास्तव में हटा दिया जाता है। – Anomie

2

यह आप पर निर्भर है! एप्पल के documentation से उद्धरण:

इस निर्देशिका का उपयोग किसी भी ऐप्स विशिष्ट समर्थन फ़ाइलों है कि आप आवेदन की या आवेदन अपडेट के दौरान की शुरूआत के बीच बनाए रखना चाहते लिखने के लिए। आपका आवेदन आमतौर पर इन फ़ाइलों को जोड़ने और हटाने के लिए ज़िम्मेदार है। यह आवश्यकतानुसार इन फ़ाइलों को फिर से बनाने में सक्षम होना चाहिए क्योंकि iTunes उन्हें डिवाइस की बहाली के दौरान हटा देता है। आईओएस 2.2 और बाद में, इस निर्देशिका की सामग्री का समर्थन आईट्यून्स द्वारा नहीं किया जाता है।

3

यदि आईओएस अंतरिक्ष से बाहर हो रहा है तो कैश निर्देशिका को शुद्ध कर दिया जाएगा। यदि उपयोगकर्ता ऐप स्टोर विकल्पों से "सभी अपडेट करें" चुनता है, तो संभव है कि वे अंतरिक्ष से बाहर हो जाएंगे।

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

-(void)deleteAllVideos 
{ 
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 


    NSFileManager* fileManager = [NSFileManager defaultManager]; 
    NSArray *directoryContent = [fileManager contentsOfDirectoryAtPath:cachePath error:NULL]; 

    NSError* error; 
    NSString* fullFilePath = nil; 

    for(NSString* fileName in directoryContent) 
    { 
     if([fileName hasSuffix:@".mp4"]) 
     { 

      fullFilePath = [cachePath stringByAppendingPathComponent:fileName]; 
      [fileManager removeItemAtPath:fullFilePath error:&error]; 

      if(error) 
      { 
       DLog(@"Error: %@",error); 
      } 
     } 
    } 

} 
+0

बहुत सरल और अच्छा कोड, मैं अपने .zip फ़ाइल पर कैश निर्देशिका में आवेदन करता हूं – BlackSheep

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