ऑब्जेक्टिव-सी में "गैर-मान्यता प्राप्त चयनकर्ता" को उदाहरण के लिए भेजा गया है


155

मैंने एक बटन बनाया और इसके लिए एक एक्शन जोड़ा, लेकिन जैसे ही यह आक्रांत हुआ, मुझे यह त्रुटि मिली:

-[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance
 0x3d03ac0 2010-03-16 22:23:58.811
 Money[8056:207] *** Terminating app
 due to uncaught exception
 'NSInvalidArgumentException', reason:'*** -[NSCFDictionary numberButtonClick:]:  unrecognized selector sent to instance 0x3d03ac0'

यह मेरा कोड है:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom];        
        numberButton.frame = CGRectMake(10, 435, 46, 38);
        [numberButton setImage:[UIImage imageNamed:@"one.png"] forState:UIControlStateNormal];
        [numberButton addTarget:self action:@selector(numberButtonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview: numberButton]; 
    }
return self;
}

-(IBAction)numberButtonClick:(id)sender{
    NSLog(@"---");
}

जवाबों:


187

ऐसा लगता है कि आप मेमोरी कंट्रोलर को ठीक से प्रबंधित नहीं कर रहे हैं और इसे किसी बिंदु पर निपटाया जा रहा है - जिसके कारण numberButtonClicked:किसी अन्य ऑब्जेक्ट को भेजा जाने वाला तरीका अब मेमोरी पर कब्जा कर रहा है जिसे व्यू कंट्रोलर पहले कब्जा कर रहा था ...

सुनिश्चित करें कि आप अपने व्यू कंट्रोलर को ठीक से बनाए / जारी कर रहे हैं।


105
यह कोड की एक बहुत कुछ लाइनों से एक बहुत ही सूक्ष्म निदान है।
माइकल मॉरिसन

41
ठीक है, इसलिए समस्या की पहचान की गई ... लेकिन "सुनिश्चित करें कि आप अपने व्यू कंट्रोलर को ठीक से बनाए / जारी कर रहे हैं।" एक सुझाव है, एक समाधान नहीं है।
एलेक्स ग्रे

12
@alex ग्रे, क्या? व्यू कंट्रोलर पर उचित मेमोरी मैनेजमेंट से समस्या हल हो गई ... मुझे समझ नहीं आ रहा है कि इसका समाधान कैसे नहीं है?
जसारीन

28
सही बात। हालांकि यह "फिक्स" लगता है .. और मैं अल्पसंख्यक में हो सकता है, (हालांकि मैं अभी भी मौजूद है), लेकिन समस्या और समाधान के बीच संबंध तुरंत स्पष्ट नहीं है। उदाहरण के लिए, मैं मुठभेड़ कर रहा हूं -[NSWindow end]: unrecognized selector sent to instance 0x100523e80 और यद्यपि मुझे ओपी के समान समानता का एहसास है, और संभवतः आपके उत्तर से समस्या का कारण भी है, एक फिक्स का कार्यान्वयन तुरंत स्पष्ट नहीं है
एलेक्स ग्रे

12
यह तुरंत स्पष्ट है। आपका NSWindow मैमोरी मैनेजमेंट लाइन के साथ कहीं भी सही नहीं है। यह जीवन चक्र है और इसे ठीक करो।
जसारीन

127

Google के माध्यम से यहाँ आने वालों के लिए जैसे मैंने किया, जो शायद Xcode 4.2 + / iOS 5+ से अधिक है, ARC के साथ क्या। मेरे पास एक ही त्रुटि थी " अपरिचित चयनकर्ता को उदाहरण के लिए भेजा गया "। मेरे मामले में मेरे पास एक UIButton की लक्षित कार्रवाई थी जो स्वयं को प्रेषक पैरामीटर के रूप में पारित करने के लिए सेट की गई थी, लेकिन बाद में एहसास हुआ कि मुझे इसकी आवश्यकता नहीं है और कोड में इसे हटा दिया गया है। तो, कुछ इस तरह:

- (IBAction)buttonPressed:(UIButton *)sender {

में बदल दिया गया था:

- (IBAction)buttonPressed {

सवाल में UIButton पर राइट क्लिक करने से पता चला कि टच अप इनसाइड इवेंट व्यू कंट्रोलर्स बटन के साथ जुड़ा हुआ था: विधि। इसे हटाकर इसे संशोधित विधि में फिर से शामिल करने ने एक उपचार का काम किया।


यह बहुत मददगार था, हालांकि मुझे लगता है कि इसका अपना सवाल और प्रतिक्रिया आसान है।
कर्टिस इंद्रवीस

@LeardardChallis यदि आप एक पैरामीटर के रूप में पारित नहीं हुए हैं तो आप बटन में प्रेषक को कैसे संदर्भित कर सकते हैं?
zakdances

8
बहुत उपयोगी प्रतिक्रिया। मैं बस इस सटीक समस्या में भाग गया और आपका समाधान बिल्कुल सही था। जब यह हुआ तब यह iTunesU पर स्टैनफोर्ड आईओएस वर्ग का अनुसरण कर रहा था। आपके उत्तर के लिए फिर से धन्यवाद!
मार्शल अलसुप

1
@LeardardChallis धन्यवाद। मैंने आपके उत्तर के लिए एक मानार्थ उत्तर जोड़ा।
1.21 गीगावाट

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

74

इस समस्या के लिए यह शीर्ष Google उत्तर था, लेकिन मेरे पास एक अलग कारण / परिणाम था - मुझे लगा कि मैं अपने दो सेंटों में जोड़ूंगा, यदि अन्य इस समस्या के कारण ठोकर खाते हैं।

मेरा आज सुबह भी ऐसा ही मुद्दा था। मैंने पाया कि यदि आप समस्या देने वाले UI आइटम पर क्लिक करते हैं, तो आप देख सकते हैं कि क्या कनेक्शन बनाए गए हैं। मेरे मामले में मेरे पास दो कार्रवाई करने के लिए एक बटन था। मैंने राइट-क्लिक मेनू से कार्यों को हटा दिया और उन्हें फिर से शुरू कर दिया और मेरी समस्या ठीक हो गई।

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


यह मेरी समस्या थी। मैंने एक फ़ंक्शन का नाम बदला और अपना कोड बदल दिया, लेकिन xib फ़ाइल में कनेक्शन नहीं बदला।
BFTrick

2
धन्यवाद! यह पता चला कि मेरे पास तीन विधियाँ थीं जिन्हें मैंने अभी भी हटा दिया था। एक सप्ताह के लिए मुझे परेशान!
erdekhayser

25

ठीक है, मुझे यहाँ चिप लगाना है। ओपी ने गतिशील रूप से बटन बनाया । मेरे पास एक समान मुद्दा था और जवाब (शिकार के घंटों के बाद) इतना सरल है कि इसने मुझे बीमार बना दिया।

उपयोग करते समय:

action:@selector(xxxButtonClick:)

or (as in my case)

action:NSSelectorFromString([[NSString alloc] initWithFormat:@"%@BtnTui:", name.lowercaseString])

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

रिसीवर कोड विकल्प इस तरह दिखते हैं:

- (void)doneBtnTui:(id)sender {
  NSLog(@"Done Button - with sender");
}
 or
- (void)doneBtnTui {
  NSLog(@"Done Button - no sender");
}

हमेशा की तरह, यह हमेशा स्पष्ट उत्तर होता है जो छूट जाता है।


1
आपका बहुत धन्यवाद! यह मेरी समस्या थी (चयनकर्ता के नाम के अंत में एक कोलन नहीं: ')। यह कैसे होता है लगभग हमेशा सबसे बेवकूफ सरल चीजें हैं जो हमें सुबह 3 बजे दीवार के खिलाफ हमारे सिर को पीटती हैं? वास्तव में धन्यवाद!
दो

23

मेरे मामले में फ़ंक्शन एक तर्क की उम्मीद नहीं कर रहा था, लेकिन त्रुटि पैदा करने के लिए बटन को कॉन्फ़िगर किया गया था। इसे ठीक करने के लिए मुझे इवेंट हैंडलर को फिर से तैयार करना पड़ा।

यहाँ मेरा कार्य है:

यहां छवि विवरण दर्ज करें

ध्यान दें कि इसमें कोई तर्क नहीं है।

यहां मेरे बटन कॉन्फ़िगरेशन की एक छवि है (इसे देखने के लिए बटन पर राइट क्लिक करें):

यहां छवि विवरण दर्ज करें

सूचना 3 घटना संचालकों हैं।

इसे ठीक करने के लिए मुझे प्रत्येक ईवेंट आइटम को हटाना पड़ा क्योंकि उनमें से एक एंटरप्रेस्ड फ़ंक्शन के लिए खुद को एक संदर्भ भेज रहा था। इन वस्तुओं को हटाने के लिए मैंने प्रत्येक आइटम के नाम के आगे छोटे x आइकन पर क्लिक किया जब तक कि कोई आइटम नहीं दिखाए गए थे।

यहां छवि विवरण दर्ज करें

आगे मुझे इवेंट में बटन को फिर से कनेक्ट करना था। ऐसा करने के लिए नियंत्रण कुंजी दबाए रखें और फिर बटन से एक पंक्ति को क्रिया तक खींचें। इसे "कनेक्ट एक्शन" कहना चाहिए। नोट: मुझे किसी कारण से काम करने के लिए XCode को पुनरारंभ करना पड़ा; अन्यथा यह केवल मुझे क्रिया (उर्फ नई क्रिया बनाने) को फ़ंक्शन के ऊपर या नीचे सम्मिलित करने देता है।

यहां छवि विवरण दर्ज करें

अब आपके पास बटन ईवेंट के लिए एक एकल ईवेंट हैंडलर होना चाहिए जो बिना किसी तर्क के पास हो:

यहां छवि विवरण दर्ज करें

यह उत्तर @Leonard Challis द्वारा उत्तर की सराहना करता है जिसे आपको भी पढ़ना चाहिए।


14

यह तब भी हो सकता है जब आप इंटरफ़ेस बिल्डर में दृश्य के "क्लास" को सेट नहीं करते हैं।


ए जी धन्यवाद! यह मेरे ऐप को एक सीग पर क्रैश करने का कारण बना रहा था, बस कंट्रोलर की क्लास लगाना भूल गया था।
इचोर्गेनचेन

कक्षा को जानने की आवश्यकता क्यों है? मैं एक UIVIV के रूप में UITableViewSection का उपयोग करने की कोशिश कर रहा हूं, और इसलिए मुझे यह त्रुटि मिल रही है। कंपाइलर का कहना है कि UITableViewSection मौजूद नहीं है इसलिए मैं UIKit को इसका आंतरिक हिस्सा मानता हूं।
इयान वॉर्बर्टन

13

मेरे मामले में, मैं NSNotificationCenter का उपयोग कर रहा था और एक चयनकर्ता का उपयोग करने का प्रयास कर रहा था जिसमें कोई तर्क नहीं था, लेकिन एक बृहदान्त्र जोड़ रहा था। बृहदान्त्र को हटाने से समस्या ठीक हो गई।

चयनकर्ता नाम का उपयोग करते समय, यदि कोई तर्क नहीं है, तो अनुगामी बृहदान्त्र का उपयोग न करें। यदि एक तर्क है, तो एक अनुगामी बृहदान्त्र का उपयोग करें। यदि एक से अधिक तर्क हैं, तो आपको उन्हें प्रत्येक तर्क के लिए अनुगामी बृहदान्त्र के साथ नाम देना होगा।

एडम रोसेनफील्ड का जवाब यहां देखें: ऑब्जेक्टिव-सी में चयनकर्ता?


11

मैं एक स्विफ्ट परियोजना के साथ यह समस्या थी जहां मैं गतिशील रूप से बटन बना रहा हूं। समस्या कोड:

var trashBarButtonItem: UIBarButtonItem {
    return UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "newButtonClicked")
}

func newButtonClicked(barButtonItem: UIBarButtonItem) {
    NSLog("A bar button item on the default toolbar was clicked: \(barButtonItem).")
}

समाधान एक पूर्ण बृहदान्त्र जोड़ना था: 'कार्रवाई के बाद: उदा

var trashBarButtonItem: UIBarButtonItem {
        return UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "newButtonClicked:")
    }

    func newButtonClicked(barButtonItem: UIBarButtonItem) {
        NSLog("A bar button item on the default toolbar was clicked: \(barButtonItem).")
    }

यहां पूरा उदाहरण: https://developer.apple.com/library/content/samplecode/UICatalog/Listings/Swift_UIKitCatalog_DefaultToolbarViewController_swift.html


ट्यूटोरियल का पालन करने और इस सटीक एक ही मुद्दे के बारे में एक संकेत पढ़ने के बाद - मैं इसके लिए गिर गया: D
user2161301

6

इसका सबसे स्पष्ट कारण (पूर्णता के लिए शामिल) अनुचित तरीके से एक पॉइंटर कास्टिंग और गलत वर्ग का एक तरीका कह रहा है।

NSArray* array = [[NSArray alloc] init];
[(NSDictionary*)array objectForKey: key]; // array is not a dictionary, hence exception

यह एक अच्छा संकेत है - किसी दृश्य या डेटा ऑब्जेक्ट (जैसे उपवर्ग का नाम जोड़ने में विफल होने पर) को उपवर्गित नहीं करना एक और तरीका है
ब्रैड एम

4

मेरा भी यही मुद्दा था।

मैंने अपने स्टोरीबोर्ड में अपना यूईबटन हटा दिया और इसे फिर से बनाया .. अब सब कुछ ठीक है।


3

मुझे एक समान समस्या थी, लेकिन मेरे लिए यह समाधान थोड़ा अलग था। मेरे मामले में, मैंने एक मौजूदा वर्ग का विस्तार करने के लिए एक श्रेणी का उपयोग किया (UIImage कुछ आकार देने की क्षमताओं के लिए - यह देखें कि इस मामले में आपकी रुचि कितनी है) और बिल्ड लक्ष्य में * .m फ़ाइल जोड़ना भूल गया। मूर्खतापूर्ण त्रुटि, लेकिन हमेशा स्पष्ट नहीं होता है कि ऐसा कहाँ होता है। मुझे लगा कि यह साझा करने लायक है ...


3

यह मेरी वजह से हुआ क्योंकि मेरे UIViewcontroller क्लास कोड के अंदर गलती से "@IBAction func ..." हो गया, इसलिए स्टोरीबोर्ड में रेफरेंस आउटलेट बनाया गया था, लेकिन रनटाइम के दौरान इसे प्रोसेस करने के लिए कोई फंक्शन नहीं था।

समाधान संपत्ति निरीक्षक के अंदर आउटलेट संदर्भ को हटाना था और फिर इसे कमांड कुंजी के साथ कक्षा कोड तक खींचकर फिर से बनाना था।

आशा करता हूँ की ये काम करेगा!


इसी तरह, यह भी मेरे साथ हुआ जब बटन ने एक फ़ंक्शन को संदर्भित किया जो अब अस्तित्व में नहीं था।
जोश वोल्फ

2

मुझे लगता है कि आपको रिटर्न प्रकार में IBAction के बजाय शून्य का उपयोग करना चाहिए। क्योंकि आपने प्रोग्राम बटन को परिभाषित किया है।


2

एक अन्य संभावित समाधान: अपने लिंकर तर्कों में '-ObjC' जोड़ें।

पूर्ण विवरण यहाँ है: स्थैतिक पुस्तकालय में उद्देश्य-सी श्रेणियां

मुझे लगता है कि जिस्ट है: यदि श्रेणी को एक पुस्तकालय में परिभाषित किया गया है जिसे आप सांख्यिकीय रूप से लिंक कर रहे हैं, तो लिंकर श्रेणी विधियों में लिंक करने के लिए पर्याप्त स्मार्ट नहीं है। उपरोक्त ध्वज सभी उद्देश्य सी कक्षाओं और श्रेणियों में लिंकर लिंक बनाता है, न कि केवल यह सोचता है कि इसे आपके स्रोत का विश्लेषण करने पर आधारित होना चाहिए। (कृपया बेझिझक होकर उस उत्तर को सुधारे या सही करें। मैं लिंक्ड भाषाओं को जानता हूं, इसलिए मैं यहां सिर्फ तोता हूं)।


2

मेरे पास एक ही त्रुटि थी और मैंने निम्नलिखित की खोज की:

जब आप कोड का उपयोग करते हैं

[self.refreshControl addTarget:self action:@selector(yourRefreshMethod:) forControlEvents:UIControlEventValueChanged];

आप सोच सकते हैं कि यह चयनकर्ता की तलाश में है:

- (void)yourRefreshMethod{
    (your code here)
}

लेकिन यह वास्तव में चयनकर्ता की तलाश में है:

- (void)yourRefreshMethod:(id)sender{
    (your code here)
}

वह चयनकर्ता मौजूद नहीं है, इसलिए आपको क्रैश मिलता है।

आप त्रुटि को हल करने के लिए चयनकर्ता को (आईडी) प्रेषक को बदल सकते हैं।

लेकिन क्या होगा यदि आपके पास अन्य फ़ंक्शन हैं जो प्रेषक प्रदान किए बिना ताज़ा फ़ंक्शन को कॉल करते हैं ? आपको एक फ़ंक्शन की आवश्यकता है जो दोनों के लिए काम करता है। एक अन्य समारोह जोड़ने के लिए आसान समाधान है:

- (void)yourRefreshMethodWithSender:(id)sender{
    [self yourRefreshMethod];
}

और फिर उस चयनकर्ता को कॉल करने के लिए ताज़ा पुलडाउन कोड को संशोधित करें:

[self.refreshControl addTarget:self action:@selector(yourRefreshMethodWithSender:) forControlEvents:UIControlEventValueChanged];

मैं पुराने मैक पर स्टैनफोर्ड आईओएस कोर्स भी कर रहा हूं जिसे मैक ओएसएक्स के नवीनतम संस्करण में अपग्रेड नहीं किया जा सकता है। इसलिए मैं अभी भी iOS 6.1 के लिए निर्माण कर रहा हूं, और इससे मेरे लिए समस्या हल हो गई है।


2

मेरे मामले में मैंने 2 घंटे बाद समस्या हल की:

प्रेषक (एक tabBar आइटम) के पास कोई रेफ़रिंग आउटलेट नहीं था । तो यह कहीं नहीं इशारा कर रहा था।

Juste अपने फ़ंक्शन के अनुरूप एक संदर्भित आउटलेट बनाएँ

आशा है कि यह आप लोगों की मदद कर सकता है।


बस जोड़ने के लिए, मेरे मामले में मैं IBActionस्विफ्ट को पोर्ट करना भूल गया । तो यह शिकायत कर रहा था कि यह उस फ़ंक्शन को कॉल करना चाहता था, लेकिन यह नहीं मिला।
देवनाब्यूले

1

मैं वर्तमान में iOS विकास सीख रहा हूं और "शुरुआत iOS6 विकास" पुस्तक के माध्यम से जा रहा हूं। मुझे अध्याय 10: स्टोरीबोर्ड में एक ही त्रुटि मिल रही थी।

मुझे यह पता लगाने में दो दिन लगे लेकिन मुझे पता चला कि गलती से मैंने TableView सेल का टैग 1 पर सेट कर दिया था जब मुझे नहीं करना चाहिए था। इस पुस्तक को करने वाले किसी अन्य व्यक्ति के लिए और इसी तरह की त्रुटि प्राप्त करने के लिए मुझे आशा है कि यह मदद करता है।

मुझे वास्तव में आशा है कि मेरे कोड में भविष्य की त्रुटियां आसानी से मिल जाएंगी! hahaha। डीबग त्रुटि ने मुझे सही दिशा में धकेलने के लिए (या कम से कम मैं डिबगर, लोल को समझने के लिए बहुत नया हूं) को धक्का देने के लिए कुछ भी नहीं किया।


1

मेरे मामले में मैं एक UIWebView का उपयोग कर रहा था और मैंने एक NSURL के बजाय दूसरे पैरामीटर में एक NSString पास किया। इसलिए मुझे संदेह है कि फ़ंक्शंस में पास किए गए गलत वर्ग प्रकार इस त्रुटि का कारण बन सकते हैं।


1

..और अब मेरा

मेरे पास बटन एक ऐसी विधि से जुड़ा हुआ था, जो दूसरे बटन के पैरामीटर को एक्सेस करता था और उस बटन के साथ कुछ करने की कोशिश करते ही मैंने बहुत काम किया। संकलन करते समय, कोई त्रुटि प्रदर्शित नहीं की गई है .. समाधान?

मैं बटन को फ़ाइल के स्वामी से लिंक करने में विफल रहा। तो अगर कोई भी मेरे जैसा बेवकूफ है, तो यह कोशिश करें :)


1

फिर भी एक और थोड़ा अलग समाधान / मामला।

मैं Xamarin और MvvmCross का उपयोग कर रहा हूं और मैं UIButton को एक ViewModel में बांधने की कोशिश कर रहा था। मेरे पास UIButton एक आउटलेट और एक TouchUpInside तक वायर्ड था।

जब बाइंडिंग मैं केवल आउटलेट का उपयोग करता हूं:

set.Bind (somethingOutlet).For ("TouchUpInside").To(vm => vm.Something);

मुझे बस इतना करना था कि एक्सकोड में एक्शन (टचअप इंसाइड) कनेक्शन को हटा दिया गया और इससे हल हो गया।

PS मुझे लगता है कि यह इसके आधार में पिछले सभी उत्तरों और विशेष रूप से @Chris Kaminski से संबंधित है, लेकिन मुझे उम्मीद है कि इससे मुझे मदद मिलेगी ...

चीयर्स।


1

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


1

मेरे लिए, यह इंटरफेसबिल्डर बीटी सीटीएल-ड्रैगिंग में बनाया गया एक बचे हुए कनेक्शन था। टूटे हुए कनेक्शन का नाम त्रुटि-लॉग में था

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[NameOfYourApp.NameOfYourClass nameOfCorruptConnection:]:
unrecognized selector sent to instance 0x7f97a48bb000'

मेरे पास एक बटन से जुड़ा एक एक्शन था। बटन दबाने से ऐप क्रैश हो गया क्योंकि आउटलेट अब मेरे कोड में मौजूद नहीं है। लॉग में नाम की खोज करने से मुझे स्टोरीबोर्ड में ले जाया गया। इसे हटा दिया गया, और दुर्घटना हो गई!


0

मैं लियोनार्ड चैलिस को जवाब दे रहा हूं, क्योंकि मैं भी स्टैनफोर्ड आईओएस वर्ग C193P ले रहा था, जैसा कि उपयोगकर्ता "ओलीओना" था

"अप्रमाणित अपवाद 'NSInvalidArgumentException' के कारण समाप्ति ऐप, कारण:"

समस्या यह थी कि मेरे पास दो बार कनेक्ट किए गए कैलकुलेटर पर "एंटर" बटन था, और एक मित्र ने बताया कि स्टोरीबोर्ड में बटन का निरीक्षण करने पर पता चला कि 2 प्रविष्टियां "टच अप इनसाइड" विशेषताओं पर थीं जब मैंने राइट क्लिक किया था "एंटर" बटन। दो "टच अप इनसाइड" "सेंटेड इवेंट्स" में से एक को मिटाकर समस्या को हल किया।

इससे पता चला कि समस्या को ट्रिगर किया गया है (कैलकुलेटर 1 पर कैलकुलेटर वॉकथ्रू पर C193P वीडियो वर्ग के लिए) 2 भेजे गए घटनाओं के रूप में, जिनमें से एक अपवाद पैदा कर रहा था।


मैं 3 प्रविष्टियों कुछ कैसे था। :)
1.21 गीगावाट

0

यह तब हो सकता है जब आप ViewController ViewControllerScene को InterfaceBuilder में असाइन नहीं करते हैं। तो ViewController.m किसी भी दृश्य से जुड़ा नहीं है।


0

मेरा हिस्सा भी शामिल है। मैं थोड़ी देर के लिए इस पर अटक गया, जब तक मुझे एहसास हुआ कि मैंने एआरसी (स्वचालित गिनती संदर्भ) के साथ एक परियोजना बनाई है अक्षम। उस विकल्प पर YES के लिए एक त्वरित सेट ने मेरी समस्या हल कर दी।


0

इसका एक और मूर्खतापूर्ण कारण इंटरफ़ेस (.h) में चयनकर्ता को परिभाषित करना है लेकिन कार्यान्वयन (.m) (पीई पेरो) में नहीं है।


0

सूची में जोड़ने के लिए एक और कारण / समाधान। यह एक iOS6.0 (और / या खराब प्रोग्रामिंग) के कारण होता है। पुराने संस्करणों में चयनकर्ता मिलान करेगा यदि पैरामीटर प्रकार मेल खाते हैं, लेकिन iOS 6.0 में मुझे पहले से काम कर रहे कोड में क्रैश मिला जहां पैरामीटर का नाम सही नहीं था।

मैं कुछ ऐसा कर रहा था

[objectName methodName:@"somestring" lat:latValue lng:lngValue];

लेकिन परिभाषा में (.h और .m) दोनों मेरे पास थे

(viod) methodName:(NSString *) latitude:(double)latitude longitude:(double)longitude;

यह iOS5 पर ठीक काम करता है, लेकिन 6 पर नहीं, यहां तक ​​कि सटीक एक ही निर्माण विभिन्न उपकरणों के लिए तैनात किया गया।

मुझे नहीं लगता कि संकलक ने मुझे यह क्यों नहीं बताया, वैसे भी - समस्या हल।


0

यह तब भी हो सकता है जब आप किसी नियंत्रक नियंत्रक से सार्वजनिक संपत्ति में एक कस्टम नियंत्रकबी वर्ग के अंदर एक संपत्ति सेट करना चाहते हैं और आपने स्टोरीबोर्ड में पहचान निरीक्षक के अंदर "कस्टम वर्ग" अभी तक सेट नहीं किया है।


0

मेरी समस्या और समाधान अलग था और मुझे लगा कि मुझे इसे यहां पोस्ट करना चाहिए ताकि भविष्य के पाठक दीवार से टकराकर अपना सिर बचा सकें।

मैं एक ही UIVIewController के लिए अलग-अलग xib आवंटित कर रहा था और यहां तक ​​कि हर जगह खोज करने के बाद भी मुझे यह पता नहीं चला कि इसे कैसे ठीक किया जाए। फिर मैंने अपना ऐपडेलगेट चेक किया जहाँ मैं कॉल initWithNibNameकर रहा था और देख सकता हूँ कि कोड को कॉपी करते समय मैंने xib नाम बदल दिया, लेकिन UIViewControllerक्लास बदलना भूल गया । इसलिए यदि कोई भी समाधान आपके लिए काम नहीं करता है, तो अपनी initWithNibNameविधि की जांच करें ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.