2011-10-20 7 views
6

मैं Xcode 4.2 उपयोग कर रहा हूँ लिखने के लिए और बजना 3.0 एक प्रोग्राम है जो एक विशेष दुर्घटना को दर्शाता है बनाने के लिए।से अधिक रिलीज करता है कि खिड़की जाना सुन्न

कार्यक्रम में एक खिड़की है जिसका अर्थ यह है कि निब में सेट किया गया है "रिलीज़ होने पर रिलीज़", इसलिए इसे बाद के उपयोगों में ओवर-रिलीज़ किया गया है। यह चादर होने का मतलब है, इसलिए यह beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo: का उपयोग करके दिखाया गया है। विंडो को दूसरी या तीसरी बार दिखाने के लिए ऐप को क्रैश करना चाहिए।

मुझे याद है कि एक वर्ष पहले हो रहा है, कार्यक्रम EXC_BAD_ACCESS प्राप्त करने के साथ और उस बिंदु पर रुकने के लिए डीबगर को ट्रिगर कर रहा है। मुझे यह भी याद है कि लाश टेम्पलेट का उपयोग कर इंस्ट्रूमेंट्स में समस्या का शिकार करने में सक्षम होना।

है यही कारण है कि मैं क्या चाहते हैं (इस कार्यक्रम के लिए एक प्रस्तुति डिबगिंग तकनीक को दिखाने के लिए का हिस्सा है), लेकिन लगता है कि अब क्या हो रहा है नहीं है। अब, कार्यक्रम दुर्घटनाग्रस्त नहीं है; उपकरण दिखाते हैं कि खिड़की पर बरकरार गिनती 1 गुना हो जाती है, लेकिन कम नहीं, इसलिए इसे हटाया नहीं जाता है।

यह ठीक होगा अगर समस्या वहां रुक गई; मैं बस एक बार या दो बार शीट छुपा और दिखा सकता था। समस्या यह है कि, दूसरी बार जब मैं (कम-से-मृत-लेकिन-अभी भी-कम-से-कम-एक-बनाए रखने-रख-जीवित) शीट लाता हूं, यह सुस्त है।

इसका मतलब है कि न तो शीट और न ही इसमें कोई नियंत्रण (इसमें एक फ़ील्ड, टेक्स्ट व्यू और दो बटन शामिल हैं) घटनाओं का जवाब देते हैं। दिल की धड़कन इसमें कुछ भी नहीं करता है; खिड़की में एक ठीक बटन है, लेकिन जब खिड़की सुस्त होती है, तो ठीक बटन पल्स नहीं होता है। शीट को खारिज करने के लिए कुछ भी काम नहीं करता है।

लेकिन कार्यक्रम क्रैश नहीं हुआ है। मैं अभी भी मेनू के साथ बातचीत कर सकता हूं और डॉक दिखाता है कि कार्यक्रम जवाब दे रहा है। अगर मैं इसे छोड़ने की कोशिश करता हूं, तो यह बीप होता है, क्योंकि इसमें शीट होती है।

क्या सुन्न जाने के लिए खिड़की के कारण है, और मैं इसके बारे में क्या कर सकता है? https://github.com/boredzo/NumbWindow

+0

अनुपूरक: परीक्षण ऐप के साथ आगे बढ़ना, ऐसा लगता है कि शीट वापस आने वाले किसी भी स्थिति में वापस आती है। अगर मैं इसे रद्द करें बटन पर क्लिक करके बंद कर देता हूं, तो वापस आने पर रद्द करें बटन अभी भी हाइलाइट किया गया है। –

+0

एआरसी सक्षम है? – NJones

+0

@NJones: नहीं। मैं शायद इस कार्यक्रम और प्रस्तुति में एमआरसी के साथ चिपके रहूंगा जब तक कि एक अच्छा मौका न हो, नए कोको प्रोग्रामर को एमआरसी कोड का उपयोग करने की आवश्यकता होगी, भले ही वे इसे अभी तक नहीं लिखें। –

उत्तर

4

मैं तुम्हें -close का उपयोग करना चाहिए चादर दूर जाना बनाने के लिए नहीं लगता है:

यहाँ प्रोग्राम है जो भी समस्या दर्शाती है की एक कम संस्करण है। यदि आप [sheet close]; लाइन [sheet orderOut:self]; के रूप में बदलते हैं, तो यह ठीक से काम करता है।

क्यों वे अलग कर रहे हैं, मैं नहीं जानता कि के रूप में। लेकिन चादर को खारिज करने के लिए हमेशा मेरा अनुभव -orderOut: का उपयोग करना है, और -close कभी नहीं। The documentation backs me up on this:

लिस्टिंग 3 क्या अंत चयनकर्ता

- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo 
{ 
    [sheet orderOut:self]; 
} 

tl; डॉ:

तुम गलत विधि का उपयोग कर रहे पैनल दूर जाना बनाने के लिए।

+0

दिलचस्प। नकारात्मकता यह है कि मुझे आरडब्ल्यूसी के साथ बग को लागू करने के किसी अन्य तरीके के बारे में सोचना होगा, लेकिन यह एक और दिन के लिए एक समस्या है। धन्यवाद। –

+0

एफटीडी: "ऑर्डरऑट को कॉल करना आउट: 'विधि स्क्रीन से विंडो को निकालने का कारण बनती है, लेकिन इसे रिलीज़ नहीं किया जाता है। विंडो बंद होने पर जानकारी के लिए' क्लोज़ 'विधि देखें।" (मैं लगभग कभी भी 'क्लोज़' का उपयोग नहीं करता); – Wevah

+1

प्रलेखन 'ऑर्डरऑट:' की अनुशंसा करता है, लेकिन विशेष रूप से 'क्लोज़ 'का उल्लंघन नहीं करता है या कोई कारण नहीं देता है जिसे मैं देख सकता हूं। –

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