2012-10-31 7 views
11

मैंने देखा है कि एप्लिकेशन पृष्ठभूमि में जाने पर एनएससीएसी अपने सभी ऑब्जेक्ट को निकालता है। क्या अपेक्षित व्यवहार है? क्या इससे बचने का कोई तरीका है?एनएससीएसी और पृष्ठभूमि

मैं ऑब्जेक्ट को बेदखल करने की अपेक्षा करता हूं जब डिवाइस पृष्ठभूमि में चला जाता है जब डिवाइस मेमोरी से बाहर नहीं होता है।

क्या आप कोई वैध विकल्प जानते हैं?

उत्तर

1

इस संबंधित पोस्ट में टिप्पणियां इंगित करती हैं कि जब ऐप पृष्ठभूमि में प्रवेश करता है तो एनएससीएच साफ़ हो जाता है। NSCache is not evicting data

7

मेरे मामले में, ऐसा हुआ जब एनएससीएसी में संग्रहीत वस्तुओं NSDiscardableContent प्रोटोकॉल के अनुरूप नहीं है। जब मैंने कहा प्रोटोकॉल जोड़ा, ऐप पृष्ठभूमि में प्रवेश कर रहा है जब ऑब्जेक्ट्स बेदखल गायब हो जाता है।

इसके अलावा, NSCache.m का स्रोत रहा here पाया पर आधारित है, वस्तुओं कि NSDiscardableContent प्रोटोकॉल के अनुरूप नहीं है कार्यावधि में कभी नहीं हटाया जाता है यहां तक ​​कि एप्लिकेशन अधिक स्मृति की आवश्यकता है और इसके तत्वों में से कुछ को बेदखल करना चाहिए। हो सकता है कि यही कारण है कि जब ऐप पृष्ठभूमि में प्रवेश कर रहा है तो गैर-NSDiscardableContent ऑब्जेक्ट्स को बेदखल कर दिया गया है क्योंकि यह उनके लिए बेदखल होने का एक अच्छा समय है।