5

मैं कोको एप्लिकेशन बना रहा हूं और विंडो नियंत्रकों का उपयोग करने के बारे में कोई प्रश्न पूछ रहा हूं। विचार यह है कि यदि उपयोगकर्ता मेनू बार से नया का चयन करता है, तो MyWindowController का एक उदाहरण जो NSWindowController का उप-वर्ग है और MyWindow.xib से एक नई विंडो प्रदर्शित होती है।विंडो बंद होने पर NSWindowController को रिलीज़ करें

मैं आवेदन प्रतिनिधि में कार्रवाई को संभालने में कामयाब रहा हूं। कुछ ऐसा करने के बाद मैंने जो कुछ देखा है, उससे निम्नलिखित किया जा सकता है। एक बार खिड़की प्रदर्शित होने के बाद मेरे पास विंडो नियंत्रक को पॉइंटर स्टोर करने का कोई कारण नहीं है और जब से मैंने इसे आवंटित किया है, तो भी मैं खिड़की को प्रदर्शित करने से पहले इसे स्वत: छोड़ देता हूं।

[[[[MyWindowController alloc] init] autorelease] showWindow:self]; 

के बाद से खिड़की उसके तुरंत बाद जारी किया गया है खिड़की संक्षेप में स्क्रीन पर प्रदर्शित करेगा और उसके बाद चले जाओ। मुझे एक समाधान मिला है जहां मैं -शोविंडो में विंडो नियंत्रक को बनाए रखता हूं: विधि और विंडो को एक बार प्राप्त करने के बाद इसे रिलीज़ करने दें।

- (IBAction)showWindow:(id)sender 
{ 
    [self retain]; 
    [[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification 
                 object:self.window 
                 queue:nil 
                usingBlock:^(NSNotification *note) { 
                 [self release]; 
                }]; 
    [super showWindow:sender]; 
} 

वहाँ यह करने के लिए एक बेहतर तरीका है? मैंने ऐप्पल प्रलेखन की खोज की है और उपयोग करने के लिए प्रथाओं पर कुछ भी नहीं मिला है। ऐसा लगता है कि यह कुछ बुनियादी है जो इसे कवर करना चाहिए, इसलिए शायद मैं गलत शब्दों से खोज रहा हूं।

उत्तर

5

आम तौर पर आप विंडो नियंत्रक को पकड़ेंगे, और जब आप इसके साथ काम करेंगे तो केवल इसे छोड़ दें। मैं कहूंगा कि आपके ऐप प्रतिनिधि इसके लिए ज़िम्मेदार होंगे। यदि एकाधिक हो तो बस उन्हें सरणी में स्टोर करें। जबकि आपका समाधान काम कर सकता है, यह बहुत ही सुरुचिपूर्ण नहीं है।

आप किसी दस्तावेज़ आधारित कोको एप्लिकेशन पर काम कर रहे हैं, तो आप अपने दस्तावेज़ उपवर्ग विधि makeWindowControllers में खिड़की नियंत्रक बना सकते हैं और उस वर्ग अपने विंडो नियंत्रक के लिए सूचक नियंत्रण न करने दें।

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