2011-03-06 21 views
7

क्या Xcode के बिंदुआईफोन - यह कैसे पता चलता है कि यह किस वस्तु का जिक्र कर रहा है?

जैसे संदेश में वस्तु का पता दिखा है [CALayer बना रहेगा]: संदेश deallocated उदाहरण 0x1bc320

के लिए भेजा है, तो जब यह आप नहीं मिल रहा है क्या होता है जो वस्तु 0x1bc320 है?

हर बार जब मैं ऐसी चीजें देखता हूं तो मैं उन सभी वस्तुओं के लिए डीबगर खोजता हूं जो मुझे मिल सकता है और मुझे कभी पता नहीं चलता कि यह कौन सा ऑब्जेक्ट है जो त्रुटि संदेश पर संदर्भित कर रहा है।

यह [कैलायर बनाए रखने] कहने के लिए तार्किक नहीं था: संदेश को आवंटित उदाहरण में भेजा गया।

क्या ऐसा होता है जब ऑब्जेक्ट को खोजने का कोई तरीका है? कुछ मैं कंसोल या कुछ टाइप कर सकता हूँ?

धन्यवाद

उत्तर

11

बस po 0x1bc320 टाइप करें। आप NSZombie ट्रैकिंग सक्षम के साथ इंस्ट्रूमेंट्स में ट्रैकिंग आवंटन का भी उपयोग कर सकते हैं। इससे ऐप रुक जाएगा और आपको ज़ोंबी ऑब्जेक्ट का पूरा जीवन चक्र दिखाएगा और इसे डेलोकेशन के बाद बुलाया जाएगा।

+1

मेरे पास एनएसज़ॉम्बी हमेशा इस मामले में सक्षम है लेकिन यह कभी मदद नहीं करता है। मैंने जो कहा है उसे टाइप करने का प्रयास किया है, और यह संदेश है: ** - [CALayer प्रतिसाद देता है चयनकर्ता:]: संदेश को हटाए गए संदेश 0x1bc320 प्रोग्राम सिग्ट्रैप, ट्रेस/ब्रेकपॉइंट जाल प्राप्त हुआ। 0x35823910 ___forwarding___() डीडीबी से बुलाए गए फ़ंक्शन में डीबग किए जाने वाले प्रोग्राम को संकेत दिया गया था। जीडीबी ने इस संदर्भ को पुनर्स्थापित कर दिया है कि यह कॉल से पहले क्या था। इस व्यवहार को बदलने के लिए "सेट unwindonsignal बंद करें" फ़ंक्शन (_NSPrintForDebugger) युक्त अभिव्यक्ति का मूल्यांकन छोड़ दिया जाएगा। – SpaceDog

+0

जारी रहा ... आपका क्या मतलब है "यह ज़ोंबी ऑब्जेक्ट का पूरा जीवन चक्र दिखाएगा और इसे डेलोकेशन के बाद बुलाया जाएगा ..." यह कहां दिखाएगा? – SpaceDog

+1

मैं अत्यधिक अनुशंसा करता हूं कि आप उपकरण का उपयोग कैसे करें। यहां व्याख्या करने के लिए यह थोड़ा जटिल है, लेकिन यदि आप ऑब्जेक्ट आवंटन उपकरण को अपने रन में जोड़ते हैं, तो अपनी सेटिंग्स खोलें और "एनएसजेम्बी डिटेक्शन" को सक्षम करें, आप देखेंगे कि मेरा क्या मतलब है (मान लें कि आप किसी ऑब्जेक्ट के जीवन चक्र को पार करने के लिए उपकरण का उपयोग कैसे करें और सभी कि)। –

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