2009-03-16 14 views
10

के बीच बाध्यकारी समस्याओं को डिबग करने के लिए सुझाए गए तकनीकें मैं कोको में नया हूं और मैं हिलेग्रास की पुस्तक 'कोको प्रोग्रामिंग मैक ओएस-एक्स' के उदाहरणों के माध्यम से अपना रास्ता काम कर रहा हूं। कुछ अवसर हुए हैं जब मैं एक नमूना आवेदन शुरू कर रहा हूं और मुझे संदेश मिलता है जैसे कि:कोको - एक्सकोड और इंटरफेस बिल्डर

200-03-11 00: 39: 19.167 कारलॉट [7517: 10 बी] एनएसडीटा नहीं बना सकता आपत्ति < _NSControllerObjectProxy: 0x188bf0> वर्ग के _NSControllerObjectProxy

एक ही रास्ता मैं देखना चाहता की तरह इस बाइंडिंग के सभी के माध्यम से जाने परिश्रम है और इंटरफ़ेस बिल्डर में विशेषताओं का एक मुद्दा हल के लिए मिल गया है, जहां मैं कुछ विन्यास चूक गए - जो सब समय लगता है!

क्या यह निर्धारित करने का कोई और अधिक प्रभावी तरीका है कि त्रुटि संदेश से समस्या क्या है? क्या ऐसी कोई समस्या है जो आप इन समस्याओं की समस्याओं को ट्रैक करने के लिए उपयोग कर सकते हैं?

+0

यह प्रश्न मेरे प्रश्न पूछने पर दिमाग में आने वाली समस्याओं में से एक है http://stackoverflow.com/questions/623653/how-do-you-read-a-third-party-cocoa-project I आपको मिले उत्तरों में बहुत दिलचस्पी है। – mouviciel

उत्तर

3

This Article इस बारे में बहुत संक्षेप में बात करता है।

असल में, यह कहता है कि आप Xib फ़ाइलों को और अधिक तेज़ी से समझने के लिए देख सकते हैं कि आपने अपने ऐप में कितनी बाइंडिंग सेट की हैं।

आशा है कि मदद करता है!

+0

आलेख मृत है –

+0

आलेख के लिए अद्यतन लिंक http://www.speirs.org/blog/2007/12/5/what-are-xib-files.html है –

1

मुझे यकीन नहीं है कि इंटरफ़ेस बिल्डर के अलावा आपके द्वारा सेट किए गए बाइंडिंग और विशेषताओं का सार प्राप्त करने का एक तरीका है। जहां तक ​​मुझे पता है कि यह एकमात्र गुई है जो इस जानकारी को दिखाता है। आप डीबगर में अपना एप्लिकेशन चलाने और अपवादों को तोड़ने का प्रयास कर सकते हैं (- [NSException raise]) यह देखने के लिए कि क्या आप कम से कम ट्रैक कर सकते हैं कि कौन सी ऑब्जेक्ट आपको यह त्रुटि दे रही है, जो आपको आईबी में खराब कनेक्शन का पता लगाने में मदद कर सकती है।

यदि आपका आवेदन पर्याप्त छोटा है और तेजी से बनाता है, और आप अभी आईबी और बाइंडिंग का उपयोग शुरू कर रहे हैं, तो मैं सुझाव दूंगा कि आप एक कनेक्शन बनाते हैं और यह जांचने के लिए इसका परीक्षण करते हैं कि यह काम करता है और फिर आगे बढ़ता है। इस तरह आप जान लेंगे कि कौन सा कनेक्शन या विशेषता समस्याएं पैदा कर रही है।

मुझे उम्मीद है कि किसी के पास इसका बेहतर जवाब होगा, लेकिन जहां तक ​​मुझे पता है कि आईबी कनेक्शन की समस्याओं को सत्यापित करने और पिन-पॉइंट करने के लिए कोई उपकरण नहीं है।

0

क्या होगा यदि आप इंटरफ़ेसबिल्डर में ऐसा करने के बजाए प्रोग्रामिंग रूप से बाइंडिंग करते हैं?

ऐसा करने के लिए आप NSObject की इस विधि का उपयोग करने के लिए है:

- (void)bind:(NSString *)binding toObject:(id)observableController withKeyPath:(NSString *)keyPath options:(NSDictionary *)options

0

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

यह तब अच्छा है जब आपने टेबल कॉलम में कुछ बाध्य किया है।

11

समस्या निवारण बाइंडिंग पर ऐप्पल की देव साइट पर एक अद्भुत लेख है।

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaBindings/Concepts/Troubleshooting.html

कुंजी ले दूर? NSBindingDebugLogLevel नामक एक सेटिंग है जिसे आप डीबग जानकारी प्राप्त करने के लिए उपयोग कर सकते हैं।

दो सेट करने के तरीके:

1 - स्थायी रूप से अपने चूक में

चूक लिखने com.yourdomain.yourapplication NSBindingDebugLogLevel 1

2 - यह एक पैरामीटर के रूप में पास जब आप डीबग

पथ/से/आपके/ऐप -एनएसबींडिंग डिबग्लॉगलेवल 1

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