2014-06-09 6 views
29

मेरे पास ब्रेकपॉइंट सेट है और मैं अपने यूआईटीएक्स्टफिल्ड के पर्यवेक्षण को प्रिंट करना चाहता हूं। मैं po myTextField.superview टाइप लेकिन मैं निम्न त्रुटि प्राप्त:एक्सकोड एलएलडीबी प्रिंट स्टेटमेंट्स विफल - NSUndoManager

error: instance method 'undoManager' has incompatible result types in different translation units ('id' vs. 'NSUndoManager *') 
note: instance method 'undoManager' also declared here 
error: 1 errors parsing expression 

क्या करता है इसका मतलब है और कैसे मैं अपने superview मुद्रित कर सकते हैं? मुझे एक लिंक मिला जो कोड में एक जंकी वर्कअराउंड प्रदान करता है: http://openradar.io/15890965, लेकिन मुझे एक बेहतर समाधान चाहिए।

+0

वही कहानी यहां: मैं 'UITableView' की श्रेणी पर' po tableView.gestureRecognizers 'आज़माएं। – Drux

+3

मैंने फ्रेम, सीमाओं, रिकर्सिव डिस्क्रिप्शन, बाधाओं, आदि (केवल अंतर्निहित तरीकों) को पीओ करने की कोशिश करते समय कई बार यह त्रुटि देखी है। एक अपंग xcode/lldb बग लगता है। – kylefinn

उत्तर

2

दुनिया के लोग: मेरे पास जवाब है!

चकमा करने के लिए सभी UIKit त्रुटियों: अपने po बयान टाइप करने से पहले, लाइन टाइप - expr @import UIKit

आप इस विश्व स्तर पर अपने अनुप्रयोग के लिए चालू करने के लिए चाहते हैं, तो अपने अनुप्रयोग प्रतिनिधि में निम्नलिखित ब्रेकप्वाइंट जोड़ें:

enter image description here

अद्यतन के लिए क्रेग Hockenberry और स्टीव Streza के लिए धन्यवाद (here पाया जाता है)।

+0

यह आलेख आपको बताता है कि इसे सभी परियोजनाओं के लिए कैसे चालू करें: http://merowing.info/2015/12/little-things-that-can-make-your-life-easier-in-2016/ – rizzes

0

क्या myTextField वास्तव में UITextField पर इंगित करता है? यही कारण है कि यह त्रुटि दिखाई देगी। उदाहरण के लिए, निम्न कोड संकलित होगा, और यदि मैं तीसरी पंक्ति पर ब्रेकपॉइंट सेट करता हूं, तो मैंने आपके द्वारा देखी गई त्रुटि को पुन: उत्पन्न करने के लिए po b.superview दर्ज कर सकते हैं।

NSString *a = @"not a view"; 
UITextField *b = (UITextField *)a; 
UIView *view = b.superview; 

यदि यह वास्तव में एक UITextField है देखने के लिए अपने LLDB प्रॉम्प्ट पर po [myTextField class] लिखकर देखें। यह एक और प्रकार का ऑब्जेक्ट हो सकता है, या nil

+0

'myTextField'' UITextField' (आउटलेट के माध्यम से) को इंगित करता है। – rizzes

1

डीबगिंग के दौरान इस त्रुटि को रोकने के लिए मैं जिस समाधान का उपयोग करता हूं, स्पष्ट रूप से सब कुछ डाल देता है।

आपके मामले में मैं

po [(UITextField *)myTextField superView] 
+0

प्रारंभिक परीक्षण से, यह मेरे लिए काम करता प्रतीत होता है। हालांकि, उपरोक्त लिंक में दूसरी टिप्पणी (http://openradar.io/15890965) का दावा है कि यह स्पष्ट रूप से कास्टिंग करते समय भी उनके लिए होता है। कोई और इसमें झुकना चाहता है? – rizzes

+0

मैंने स्पष्ट रूप से कास्टिंग करने की कोशिश की और अभी भी यह त्रुटि प्राप्त की। जैसे पीओ (एनएसएसटींग *) [((आईबीएडबैनर व्यू *) adView) रिकर्सिव डिस्क्रिप्शन] –

1

आप 'myTextField' के लिए किसी भी कस्टम एक्सेसर पास कोई तरीका है क्या करेंगे? मैंने इस मुद्दे को कई बार देखा है और आमतौर पर पीओ के कारण ऐसी वस्तु के लिए एक संपत्ति मुद्रित करने की कोशिश की जाती है जो पहली बार अपने गेटर को बुलाया जाता है। उदाहरण के लिए, यदि मैं UITableViewCell पर 'po self.imageView.contentMode' चलाने की कोशिश करता हूं तो मुझे वही त्रुटि मिलती है। अपने ब्रेकपॉइंट को उस कोड में एक बिंदु पर ले जाने का प्रयास करें जहां आप जानते हैं कि 'myTextField' पूरी तरह से प्रारंभ किया गया है।

+0

मेरे पास myTextField के लिए कस्टम एक्सेसर विधि नहीं है। हालांकि अच्छा विचार है। – rizzes

0

मुझे यह त्रुटि एक्सकोड 5.1.1 में मिली और एक्सकोड 5.1.1 छोड़कर और एक्सकोड 6 का प्रयास करके इसे ठीक किया गया। एक्सकोड 5.1.1 के लिए एक्सकोड 5.1.1 को रीबूट करना कुछ लोगों के लिए भी काम कर सकता है।

+0

मुझे अभी तक यह त्रुटि Xcode 6 के साथ नहीं मिली है, इसलिए ऐप्पल ने इसे ठीक कर दिया होगा। हालांकि हम निश्चित हैं कि इसमें कुछ और समय लगेगा। – rizzes

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