2011-01-18 12 views
14

मैंने अभी आईओएस विकास सीखना शुरू कर दिया है और अब मेरे पास मेरे मुख्य समारोह पर सिगाबर्ट है। त्रुटि को फोन करके शुरू हो रहा है:मुख्य समारोह पर सिगाबर्ट

int retVal = UIApplicationMain(argc, argv, nil, nil); 

जैसा कि मैंने बहुत क्या कर सकता है पर iOS प्रोग्रामिंग मुझे पता नहीं है करने के लिए नई इस त्रुटि के कारण द्वारा हूँ। मेरे कॉलस्टैक पर जो एक चीज मिली है वह निम्नलिखित अपवाद उठाया जा रहा है: dyld_stub_objc_exception_throw इस त्रुटि का कारण क्या हो सकता है?

उत्तर

2

यह एक नई भाषा/एपीआई सीखने वाले व्यक्ति की एक सामान्य त्रुटि थी। मैं दृश्य को व्यवस्थित करने के लिए भूल गया था।

UIView *controllersView = [myViewController view]; 
[window addSubview:controllersView]; 
2

UIApplicationMain मूल रूप से आपके शेष एप्लिकेशन को बंद कर देता है, इसलिए दुर्घटना का वास्तविक कारण आपके आवेदन में कहीं भी हो सकता है। आपको कॉल स्टैक को और नीचे देखने की आवश्यकता हो सकती है।

हालांकि, मुझे लगता है कि आप अंतिम दो पैरामीटर के रूप में nil पास कर रहे हैं। पहला nilprincipalClassName तर्क है, जो मूल रूप से शून्य हो सकता है यदि आप UIApplication को मूल श्रेणी के लिए चाहते हैं। दूसरा nil एप्लिकेशन प्रतिनिधि का नाम है; यदि आप मुख्य निब से प्रतिनिधि लोड करते हैं तो आपको nil पास करना चाहिए। क्या आप? यदि आप नहीं करते हैं, तो यह समस्या हो सकती है (मैं नहीं कह सकता कि मैंने कभी भी इस तर्क को उन दोनों तर्कों के साथ nil) कहा है।

+0

मैं प्रतिनिधि नाम लेकिन कोई सफलता गुजर की कोशिश की। मुझे लगता है कि मेरे कोड को चलाने से पहले त्रुटि होती है FinishLaunchingWithOptions कभी भी – Raphael

33

मुझे एक्स-कोड 4.2 में यह समस्या हो रही थी और मुद्दा यह था कि यह मेरी स्टोरीबोर्ड नहीं ढूंढ सका। निराशाजनक हिस्सा यह था कि वास्तविक अपवाद क्या था इसका कोई संकेत नहीं था। मैं अपने मुख्य समारोह में कोशिश/पकड़ जोड़कर लॉग में अपवाद प्राप्त करने में सक्षम था। (इसलिए यदि आप एआरसी अपने मुख्य उपयोग नहीं कर रहे कोशिश पकड़ के साथ थोड़ा अलग दिखेगा नोट मैं एआरसी उपयोग कर रहा हूँ,)

int main(int argc, char *argv[]) 
{ 
    int retVal = 0; 
    @autoreleasepool { 
     NSString *classString = NSStringFromClass([sortaAppDelegate class]); 
     @try { 
      retVal = UIApplicationMain(argc, argv, nil, classString); 
     } 
     @catch (NSException *exception) { 
      NSLog(@"Exception - %@",[exception description]); 
      exit(EXIT_FAILURE); 
     } 
    } 
    return retVal; 
} 
+0

नहीं चलाता है यह एक लाइफसेवर है, मेरे ऐप ने UITableViewController की अपेक्षा की जहां मैं UIViewController को पार कर रहा था। – Echilon

+1

मैं स्टैक ट्रेस प्राप्त करने के लिए एनएसएलॉगिंग '[अपवाद कॉलस्टैक सिंबल];' भी अनुशंसा करता हूं। आपके पास विवरण के लिए 'विवरण' भी नहीं है, आप केवल 'एनएसएलओजी (@ "अपवाद -% @", अपवाद) जा सकते हैं;' (जब आप इसे प्रारूप स्ट्रिंग में भेजते हैं जैसे कि nslog है)। – apple16

+1

यह तकनीक शानदार है! हर किसी के द्वारा समान हार्ड-टू-अप अपवादों को जाल में मदद करने के लिए इसकी सिफारिश की जानी चाहिए। अब मैं इस तरह की अपवाद रिपोर्टिंग स्थापित करने के लिए अपनी सभी परियोजनाओं में एक विशेष डेबग मैक्रो जोड़ रहा हूं। – jpap

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