मैं एक कठिन परिस्थिति में एमवीसी पैटर्न को कार्यान्वित करना चाहता हूं। कठिनाई यह है कि मेरे मॉडल (घटनाओं को उत्पन्न करने वाली संस्थाएं) लंबे समय तक जीवित हैं, जबकि दृश्य (घटनाओं के रिसीवर) अल्पकालिक हैं। मेरी समस्या यह है कि दोनों के बीच संबंध के माध्यम से, लंबे समय तक रहने वाले मॉडल मेरे अल्पकालिक दृश्यों को जीवित रखते हैं, यानी वे कचरे से एकत्र नहीं हो सकते हैं।जीवित रहने के बिना एमवीसी पैटर्न को कार्यान्वित करने के लिए कैसे
[MODEL] ------- <weak> -------> [VIEW]
|
<strong>
|
v
[CONTROLLER]
इससे बचने के लिए एक तरह से एक WeakHashMap < दृश्य में, नियंत्रक > मॉडल में कनेक्शन स्टोर करने के लिए है। यह अनिवार्य रूप से दृश्य को कचरा इकट्ठा करने देता है, और जब ऐसा होता है, तो WeakHashMap संबंधित नियंत्रक को भी फेंक देगा। यही है, अगर नियंत्रक दृश्य के लिए एक (मजबूत) संदर्भ नहीं रखता है - जो आमतौर पर करता है। इस मामले में जब तक मॉडल गुंजाइश से बाहर नहीं जाता तब तक दृढ़ संदर्भों के माध्यम से दृश्यों को जीवित रखा जाता है।
[MODEL] ------- <weak> -------> [VIEW]
| ^
<strong> |
| |
v |
[CONTROLLER] ----------- <strong> ---/
श्रोताओं को मेरे मॉडल में संलग्न करने का कोई और तरीका है जो मेरे विचार (और नियंत्रक) को जीवित नहीं रखेगा?
अद्यतन: एमडीएमए के सवाल का जवाब करने के लिए: क्योंकि यह दृश्य को अपडेट करना होगा नियंत्रक, देखें के लिए एक संदर्भ रहता है। यह संदर्भ कमजोर हो सकता है, लेकिन मैं नियंत्रक को व्यू क्लास के अज्ञात आंतरिक-कक्षाएं रखना चाहता हूं, इस स्थिति में नियंत्रक उदाहरण के दृश्य उदाहरण के लिए एक अंतर्निहित मजबूत संदर्भ है।
क्यों नियंत्रक को देखने के लिए एक मजबूत संदर्भ है? – mdma