2012-12-13 14 views
34

मैं तालिका दृश्य में टेक्स्ट के साथ वेब से डाउनलोड किए गए आइकन की एक सूची प्रदर्शित कर रहा हूं। आइकनों को सर्वर की तरफ बदला जा सकता है और जैसे ही नए आइकन उपलब्ध हो रहे हैं, उन्हें बदलने की जरूरत है। मैं निम्नलिखित कोड का उपयोग कर प्रयास करें:SDWebImage समाशोधन कैश

[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly]; 

और [[SDImageCache sharedImageCache] clearMemory]; मेरी ताज़ा कॉलबैक में फोन है, लेकिन यह कैश की सामग्री को शुद्ध नहीं है। इसके लिए और भी, अगर मैं एप्लिकेशन बंद करता हूं और इसे फिर से खोलता हूं तो छवि अभी भी वहां है।

मुझे कैश साफ़ करने का केवल एक ही रास्ता मिला और यह [[SDImageCache sharedImageCache] clearDisk]; पर कॉल करके है। ऐप बंद करने और फिर से खोलने के बाद जो केवल काम करता है।

डिस्क कैशिंग का उपयोग न करने के लिए मैं SDWebImage को कैसे मजबूर कर सकता हूं?

+0

उन सभी लोगों के लिए जो हर बार कुछ छवियों को फिर से डाउनलोड करना चाहते हैं, – Eugene

उत्तर

112
SDImageCache *imageCache = [SDImageCache sharedImageCache]; 
[imageCache clearMemory]; 
[imageCache clearDisk]; 

अपने didReceiveMemoryWarning में भी कोड की इन पंक्तियों डाल करने के लिए मत भूलना।

+20

SDWebImage का वर्तमान संस्करण स्मृति चेतावनियां होने पर स्वचालित रूप से स्मृति कैश को साफ़ कर देगा। ऐसा करने की कोई ज़रूरत नहीं है और विशेष रूप से डिस्क कैश को साफ़ करने की आवश्यकता नहीं है। –

+0

क्या आप एक स्रोत जोड़ सकते हैं। कौन सा संस्करण इन कार्यक्षमताओं का समर्थन करेगा? –

+5

https://github.com/rs/SDWebImage/blob/master/SDWebImage/SDImageCache.m#L65 –

9

कोई समस्या होने पर स्रोत स्थित है। ऐसा लगता है कि मुझे SDImageCache में उपयोग किए गए सिंगलटन पैटर्न द्वारा धोखा दिया गया था। UIImageView पर उपयोग किए जाने वाले विस्तार के लिए कैश को SDWebImageManager द्वारा नियंत्रित किया जा रहा है जिसमें SDImageCache का आवृत्ति चर है। यदि आप विस्तार के लिए कैश को साफ़ करना चाहते हैं तो आपको अपने imageCache की विधियों को साफ़डिस्क और स्पष्ट स्मृति जैसी कॉल करना होगा।

+0

विकल्पों में 'SDWebImageRefreshCached' को पास करें, जो स्पष्ट कैश विधि को कॉल करने में सक्षम नहीं है। [[SDWebImageManager साझा प्रबंधक] clearCaches]। मैंने कोशिश की लेकिन यह दुर्घटनाग्रस्त हो रहा है। क्रिप्या मेरि सहायता करे। –

+3

@ सूरजशिंदे 'एसडीआईमेज कैश' के लिए ऐसी कोई विधि नहीं है, बेशक यह दुर्घटनाग्रस्त हो जाएगी। '[[[SDWebImageManager साझा प्रबंधक] छवि कैश] clearDisk];', '[[[SDWebImageManager साझा प्रबंधक] imageCache] clearMemory];' – Eugene

+0

धन्यवाद, वास्तव में मैं पुराने SDwebcache का उपयोग कर रहा था, इसमें छवि कैश उदाहरण नहीं था। –

-1

एसडीआईमेज कैश विधियों को छोड़कर, मैं दृढ़ता से आपको सलाह देता हूं कि अपनी छवि यूआरएल जांचें। मेरी स्थिति में मैंने छवि कैश के लिए हर विधि की कोशिश की और स्मृति समस्या अभी भी जारी है। मुख्य रूप से आईफोन 4 एस पर क्रैश होते थे क्योंकि हार्डवेयर इसे संभालने में सक्षम नहीं था।

मुख्य मुद्दा url ampersand एन्कोडिंग था!

उदाहरण के लिए, इन यूआरएल को देखें: पहला यूआरएल "& amp" का उपयोग कर रहा है और दूसरा नहीं है। एम्परसैंड की वजह से मेरी JSON लाइब्रेरी चौड़ाई और चौड़ाई मान नहीं पढ़ सकती है, यह बहुत अधिक होनी चाहिए। यही कारण है कि मुझे स्मृति समस्या थी।

1) /select.php?imageid=101961221 "& amp"; चौड़ाई = 100 "& amp"; isWatermarked = सच

2) /select.phpimageid=101961221 & चौड़ाई = 100 & isWatermarked = सच

इसके अलावा नवीनतम SDWebImage पुस्तकालय के संस्करणों UIImageView+WebCache.h वर्ग में शामिल है और यह वास्तव में अच्छी तरह से कैश समस्याओं को संभाल।

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