2010-12-07 24 views
7

मैं एक एमकेमैप व्यू आधारित आईफोन/आईपैड मैपिंग ऐप पर काम कर रहा हूं जो कुछ सीमित कार्यक्षमता प्रदान करने के लिए अपना खुद का मूल आधार मानचित्र ओवरले करता है, भले ही उपयोगकर्ता ऑफलाइन हों और Google के मानचित्र टाइल सर्वर तक नहीं पहुंच सकें।मैप टाइल्स के MKMapView के कैश को मैं कैसे साफ़ कर सकता हूं?

यह कार्यक्षमता काम कर रही है - लेकिन मुझे प्रत्येक नए निर्माण के बाद इसका परीक्षण करने में कठिनाई हो रही है क्योंकि मुझे आईओएस मानचित्र टाइल कैश को फ्लश/रीसेट करने का कोई तरीका नहीं मिल रहा है। आईओएस कैश भी एक पावर-चक्र और आईओएस डिवाइस के रीबूट से बचता है। जहां भी मैंने पूर्व परीक्षण सत्र से स्मृति में टाइल्स के साथ पिछले प्रस्तुतकर्ताओं में ज़ूम किया है।

क्या आईओएस को अपने मानचित्र कैश को फ्लश करने के लिए मजबूर करने का कोई तरीका है? अभी एकमात्र विकल्प मैं सोच सकता हूं कि जब भी मुझे परीक्षण करने की आवश्यकता होती है तो ओएस को फिर से भरना है।

धन्यवाद!

बीटीडब्लू: यह लगभग this question का डुप्लिकेट है, लेकिन उस स्थिति में यह मुद्दा खाली कैश के साथ परीक्षण नहीं कर रहा था, बल्कि स्मृति को मुक्त कर रहा था। राम मुद्दे पर ध्यान केंद्रित किए गए स्वीकृत उत्तर, वही समस्या नहीं है जो मैं यहां कर रहा हूं।

उत्तर

5

शून्य करने के लिए NSURLConnection कैश आकार सेट करने का प्रयास अपने MKMapView

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
[sharedCache release]; 

के किसी भी मामले यह आपके कनेक्शन कैश के रूप में संचित डेटा संग्रह होना बंद कर सकता है बनाने से पहले शेष आकार हमेशा अपर्याप्त होगी

+0

क्या आप जानते हैं कि NSURLCache MKMapView को प्रभावित करता है? यह मेरे प्रयोगों से प्रतीत होता है कि मानचित्र दर्शक के पास अपनी अलग कैश स्पेस है, लेकिन मैं गलत हो सकता था। – radven

+1

हाय @radven! असल में मैं पहले 'एमकेमैप व्यू' और 'एनएसआरएल कैश' के बारे में बहुत संदिग्ध था, लेकिन फिर मैंने अपने ऐप के सभी कनेक्शनों को ट्रैक करने के लिए 'NSURLCache' को उपclassing करने की कोशिश की और मैंने कैश के माध्यम से 'MKMapView' Google कॉल को देखा। आप देख सकते हैं कि मैंने इसे इस थ्रेड में कैसे कार्यान्वित किया है http://stackoverflow.com/questions/5381687/ios-track-url-connections/5928185#5928185 –

+0

मुझे आपके द्वारा अन्य प्रश्नों पर विस्तृत विधि के साथ जाना है और बहुत भाग्य नहीं है। एक पैन के दौरान और मानचित्र के आस-पास ज़ूम के दौरान, मैंने पहले कभी नहीं देखा था, मुझे केवल कैश किए गए रेस्पॉन्सफ़ोररक्वेट पर एक कॉल मिला: फ़ंक्शन और इसे "http://www.google.com/glm/mmap" के रूप में लॉग किया गया था, मुझे हर Google टाइल के लिए कॉल की उम्मीद थी। क्या मैं गलत था? – Craig

1

मैं इस प्रश्न पर ठोकर खाई, और यह निश्चित रूप से एक दिलचस्प समस्या है। जाहिर है, MKMapView कहीं भी डिस्क पर टाइल्स को सहेज रहा है (क्योंकि यह रीबूट से बचता है)। मुझे आश्चर्य है कि एक संभावित समाधान 1 होगा) पता लगाएं कि कैश किए गए टाइल्स कहाँ से सहेजे जा रहे हैं, और फिर 2) जब आपका ऐप शुरू होता है तो उस कैश को प्रोग्रामिक रूप से हटा दें। इसके लिए आपको अपने एप्लिकेशन सैंडबॉक्स के बाहर फ़ाइल पहुंच देने के लिए जेलब्रोकन डिवाइस की आवश्यकता होगी। वितरण के लिए स्पष्ट रूप से अनुपयुक्त, लेकिन परीक्षण के लिए संभवतः स्वीकार्य होगा।

उस ने कहा, जब मुझे यह समस्या हुई तो मैंने अपना खुद का टाइल नक्शा दृश्य लागू करने और Google मानचित्र या मेरे ऑफ़लाइन मोड को प्रदर्शित करने के लिए एक पहुंच क्षमता परीक्षण चलाया।

1

हम नहीं है एक ऐप के भीतर से MKMapView कैश को साफ़ करने का एक तरीका मिला, लेकिन आप सेटिंग्स \ सामान्य \ रीसेट पर "सभी सामग्री और डेटा रीसेट करें" कर सकते हैं। हालांकि यह आदर्श नहीं है, यह "ओएस को रिफ्लैश करने" से बहुत तेज़ है, वास्तव में इसमें केवल कुछ मिनट लगते हैं। रीसेट के बाद भी आपने डिवाइस सेट अप किया है और ऐप को फिर से लोड किया है, लेकिन इसमें कुछ और मिनट लगते हैं।

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