9

में क्रैशिंग मैं कारण के साथ एक NSInvalidArgumentException हो रही है: -[UITapGestureRecognizer initWithCoder:]: unrecognized selector sent to instanceiOS5 स्थिर अनुप्रयोग iOS4.3 सिम्युलेटर

मैं समझता हूँ कि UITapGestureRecognizers ios4.x में समर्थित थे था?

क्या उप आईओएस 5 संस्करणों के लिए एक अलग xib फ़ाइल लोड करना संभव है?

+2

वे 4.x में समर्थित हैं, बात यह है कि आप उन्हें xib में नहीं छोड़ सकते हैं (मुझे लगता है कि यह मामला यहां है)। आप या तो इसे कोड में सेट नहीं कर सकते हैं या एक और xib बना सकते हैं और इसे संस्करण जांच के बाद लोड कर सकते हैं। – mit3z

+0

[संभावित रूप से संबंधित प्रश्न] देखें (http://stackoverflow.com/questions/6520932/uigesturerecognizer-in-uiview-object)। ऐसा हो सकता है कि आपको अपने UITapGestureRecognizers को एक अलग तरीके से चालू करने की आवश्यकता हो। –

+0

मुझे लगता है कि आपका पहचानकर्ता हटा दिया जा रहा है ... UIGestureRecognizer का समर्थन नहीं करता है -इनिटविथकोडर: और यही कारण है कि यह क्रैश हो रहा है। (मुझे लगता है कि आपके UIGestureRecognoizer ऑब्जेक्ट को डिलीकेट पॉइंटर को किसी अन्य ऑब्जेक्ट द्वारा लिया जा रहा है, जिसे initWithCoder का जवाब देना है: ...) –

उत्तर

17

जैसा कि @ mit3z मूल प्रश्न पर उनकी टिप्पणी में बताता है, आईओएस 4.3 कोड के साथ मैन्युअल रूप से सेटअप करते समय केवल इस सुविधा का समर्थन करता है। यह इंटरफेस बिल्डर के साथ समर्थित नहीं है।

ऐप्पल ने हमें इस पर सभी दुखों को बचाया होगा अगर उन्होंने इसे केवल बिल्ड-टाइम चेतावनी के रूप में जोड़ा।

+1

यह मेरी समस्या हल हो गया। कोड के माध्यम से जेस्चर रिकोनाइज़र को जोड़ने का एक त्वरित तरीका के लिए, यहां जवाब देखें: http://stackoverflow.com/questions/5954934/issue-with-a-uitapgesturerecognizer –

1

मुझे लगता है कि आपके पास एनएससीओडी अनुपालन ऑब्जेक्ट है जो क्रैश से पहले हटा दिया गया है। UITapGestureRecognizer को इसके पते पर आवंटित किया जाता है और जब गायब ऑब्जेक्ट (लेकिन इसका संदर्भ नहीं) initWithCoder को स्वयं कॉल करने का प्रयास करता है, तो यह वास्तव में इसके बजाय आपके इशारे पर पहचानकर्ता को पहचानता है।

तब आपकी समस्या उस विलुप्त वस्तु से आती है लेकिन आपके इशारे से नहीं पहचानकर्ता।

अपने सभी आईबीओलेट गुणों को बनाए रखना सुनिश्चित करें।

+0

मैं सभी आईबीओटलेट्स पर कॉल करता हूं। मैं एआरसी का उपयोग कर रहा हूं ... – Andy

+0

आप दोनों एआरसी का उपयोग नहीं कर सकते हैं और कॉल बनाए रख सकते हैं। यदि संकलन बनाए रखने के लिए कॉल करते हैं, तो आप एआरसी का उपयोग नहीं कर रहे हैं। –

+0

मुझे लगता है कि उसका मतलब है कि वह अपने मजबूत आईबीओलेट गुणों को टाइप करने के लिए 'मजबूत' टाइपिंग या 'बनाए रखना' है, वास्तव में ऑब्जेक्ट्स पर खुद को बनाए रखने के लिए नहीं। अगर वह वास्तव में आर्क के साथ 'बनाए रखने' को बुला रहा था, तो कोड संकलित नहीं होगा। – btomw

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