नहीं कहा जा रहा है मेरे पास एक नेविगेशन आधारित दृश्य नियंत्रक है और दृश्य नियंत्रक में मैंने शीर्ष नेविगेशन बार छुपाया है और नेविगेशन बार के रूप में एक कस्टम UIView का उपयोग किया है।UIViewController और UIview dealloc को
UIView बार में बैक बटन है और बैक बटन प्रीपेड होने पर व्यू कंट्रोलर से संवाद करने के लिए मैं प्रतिनिधि विधियों का उपयोग करता हूं (मैंने प्रोटोकॉल घोषित किया है)।
मैं अपने कस्टमनेविगेशन बार आईडी प्रतिनिधि में प्रतिनिधि का उपयोग करता हूं;
और मुख्य दृश्य नियंत्रक में जब मैं नेविगेशन पट्टी मैं प्रतिनिधि
topBar = [[TopNavigationBar alloc] initWithFrame:CGRectMake(0, 0, 480, 40)];
topBar.lblTitle.text = @"Shop";
topBar.delegate = self;
सेट मैं ViewControllers dealloc में इस बार जारी आवंटित।
अब जब मैं बैक बटन दबाता हूं तो मैं मुख्य व्यू कंट्रोलर में पॉपव्यू कंट्रोलर को कॉल करने के लिए प्रतिनिधि विधि का उपयोग करता हूं।
//in Custom Bar
-(void)ButtonPressed {
[delegate TopNavigationBarBackButtonPressed];
}
//In View COntroller
-(void)TopNavigationBarBackButtonPressed {
[self.navigationController popViewControllerAnimated:YES];
}
अब ViewController poped है और नियंत्रण पिछले ViewController को जाता है लेकिन dealloc दोनों ViewController और UIView
में निकाल दिया नहीं है क्या मैं गलत कर रहा हूँ?
किसी भी विचार लोगों होना चाहिए ?? यदि retainCount 0 नहीं है तो एक डीलोक को नहीं बुलाया जाएगा, लेकिन मैं कहीं भी कंट्रोलर को बनाए नहीं रख रहा हूं। मैं इसे स्टैक पर धक्का देने के बाद एक [vewController रिलीज] करता हूं। इसलिए एकमात्र कारण मैं सोच सकता हूं कि मैंने लिखा कस्टम प्रोटोकॉल है। क्या मुझे इसे छोड़ना है? मैं संपत्ति में प्रतिनिधि को बरकरार रखता हूं। लेकिन अगर मैं इसे डेलोक में छोड़ देता हूं, तो इसे बुलाया नहीं जा रहा है। स्टम्प्ड !!! –