से पहले प्रतिनिधि मौजूद है या नहीं, मैं आईओएस ऐप लिखता हूं और आलसी लोड छवियों में छविस्टोर लाइब्रेरी का उपयोग करता हूं और उन्हें स्मृति में कैश करता हूं। (Https://github.com/psychs/imagestore)आईओएस जांचें कि कॉल विधि
ViewController पर मैं imagestore उदाहरण बनाने के लिए:
imageStore = [ImageStore new];
imageStore.delegate = self;
छवि सफलतापूर्वक लोड किया, imagestore कॉल प्रतिनिधि विधि
- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url
कि reloadData कर कोशिकाओं को फिर से निकालने के लिए टेबलव्यू पर। सभी अच्छे काम करते हैं। लेकिन समस्या है: यदि ViewController ने अपलोड किया था (नेविगेशन नियंत्रक में वापस जाएं) और छवि लोड हो गई है, तो क्रैश के साथ एप्लिकेशन खत्म हो गया है, क्योंकि अनलोड किए गए ViewController की इमेस्टेस्ट कॉल विधि।
मैं निम्नलिखित करने की कोशिश: 1) ViewController में मैं viewDidUnload अनुभाग में इस कोड को जगह:
imageStore.delegate = nil;
imageStore = nil;
2) imageStore में मैं शून्य के लिए जाँच जोड़ा गया:
if(delegate != nil) {
...call delegate method
}
यह काम करता है, लेकिन समय-समय पर ऐप दुर्घटनाग्रस्त हो जाता है।
'2) 'अनावश्यक है। संदेश सुरक्षित रूप से 'nil' ऑब्जेक्ट पर भेजा जा सकता है। – Nekto
उत्तर के लिए धन्यवाद! लेकिन अगर छवि लोड हो और दृश्य नियंत्रक अनलोड हो तो इसके बिना 100% क्रैश हो ... –