2011-06-09 12 views
16

प्राप्त किया गया है मैं इंटरफेस बिल्डर का उपयोग कर एक उद्देश्य सी ऐप के लिए एक सरल ट्यूटोरियल संकलित और चलाने की कोशिश कर रहा हूं। मैं Xcode 4.0.2 का उपयोग कर रहा है और iOS पर अनुकरण (iPhone) 4,3उद्देश्य सी, थ्रेड 1 प्रोग्राम सिग्नल SIGABRT

http://www.switchonthecode.com/tutorials/creating-your-first-iphone-application-with-interface-builder

जब मैं परियोजना का निर्माण, यह ठीक बनाता है लेकिन इसके साथ दुर्घटनाओं को चलाने के लिए एक बार एप्लिकेशन कोशिश करता है:

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, @"SimpleUIAppDelegate"); 
    [pool release]; 
    return retVal; 
} 

मुझे लाइन 4 पर त्रुटि मिलती है: int retVal = UI ... थ्रेड 1: प्रोग्राम सिग्नल "SIGABRT" प्राप्त हुआ।

यदि इस परियोजना की अन्य फाइलों को स्पष्टता के लिए पोस्ट करने की आवश्यकता है, तो मैं ऐसा कर सकता हूं।

धन्यवाद!

संपादित करें:

SimpleUIViewController.h:

#import <UIKit/UIKit.h> 

@interface SimpleUIViewController : UIViewController <UITextFieldDelegate> { 
    UITextField *textInput; 
    UILabel *label; 
    NSString *name; 
} 

@property (nonatomic, retain) IBOutlet UITextField *textInput; 
@property (nonatomic, retain) IBOutlet UILabel *label; 
@property (nonatomic, copy) NSString *name; 

- (IBAction)changeGreeting:(id)sender; 

@end 

SimpleUIViewController.m:

#import "SimpleUIViewController.h" 

@implementation SimpleUIViewController 

@synthesize textInput; 
@synthesize label; 
@synthesize name; 

- (IBAction)changeGreeting:(id)sender { 
    self.name = textInput.text; 

    NSString *nameString = name; 
    if([nameString length] == 0) { 
     nameString = @"Inigo Montoya"; 
    } 
    NSString *greeting = [[NSString alloc] 
          initWithFormat:@"Hello, my name is %@!", nameString]; 
    label.text = greeting; 
    [greeting release]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    if(theTextField == textInput) { 
     [textInput resignFirstResponder]; 
    } 
    return YES; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Release anything that's not essential, such as cached data 
} 

- (void)dealloc { 
    [textInput release]; 
    [label release]; 
    [name release]; 
    [super dealloc]; 
} 

@end 

त्रुटि संदेश:

This GDB was configured as "x86_64-apple-darwin".Attaching to process 2668. 
2011-06-09 11:20:21.662 InterfaceBuilder[2668:207] Unknown class InterfaceBuilderAppDelegate_iPhone in Interface Builder file. 
2011-06-09 11:20:21.666 InterfaceBuilder[2668:207] *** Terminating app due to uncaught  exception 'NSUnknownKeyException', reason: '[<UIApplication 0x4b1a900>  setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key textInput.' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x00dc25a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x00f16313 objc_exception_throw + 44 
    2 CoreFoundation      0x00dc24e1 -[NSException raise] + 17 
    3 Foundation       0x00794677 _NSSetUsingKeyValueSetter + 135 
    4 Foundation       0x007945e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285 
    5 UIKit        0x0021030c -[UIRuntimeOutletConnection connect] + 112 
    6 CoreFoundation      0x00d388cf -[NSArray makeObjectsPerformSelector:] + 239 
    7 UIKit        0x0020ed23 -[UINib instantiateWithOwner:options:] + 1041 
    8 UIKit        0x00210ab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168 
    9 UIKit        0x0001617a -[UIApplication _loadMainNibFile] + 172 
    10 UIKit        0x00016cf4 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 291 
    11 UIKit        0x00021617 -[UIApplication handleEvent:withNewEvent:] + 1533 
    12 UIKit        0x00019abf -[UIApplication sendEvent:] + 71 
    13 UIKit        0x0001ef2e _UIApplicationHandleEvent + 7576 
    14 GraphicsServices     0x00ffb992 PurpleEventCallback + 1550 
    15 CoreFoundation      0x00da3944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    16 CoreFoundation      0x00d03cf7 __CFRunLoopDoSource1 + 215 
    17 CoreFoundation      0x00d00f83 __CFRunLoopRun + 979 
    18 CoreFoundation      0x00d00840 CFRunLoopRunSpecific + 208 
    19 CoreFoundation      0x00d00761 CFRunLoopRunInMode + 97 
    20 UIKit        0x000167d2 -[UIApplication _run] + 623 
    21 UIKit        0x00022c93 UIApplicationMain + 1160 
    22 InterfaceBuilder     0x000027ff main + 127 
    23 InterfaceBuilder     0x00002775 start + 53 
    24 ???         0x00000001 0x0 + 1 
) 
terminate called after throwing an instance of 'NSException' 
sharedlibrary apply-load-rules all 
Current language: auto; currently objective-c 
(gdb) 

इम नया करने के लिए Obj सी, और पूर्ण है मुझे कोई त्रुटि नहीं है कि मैं उस त्रुटि संदेश के संबंध में क्या देख रहा हूं। कोई मदद?

+1

हाँ, मुझे लगता है कि आप और अधिक कोड और अधिक दुर्घटना की जानकारी प्रदान करना होगा ... आप SIGABRT से कुछ और मिल गया है, एक अपवाद है, एक कॉल स्टैक, आदि जैसे ...? – jv42

+0

क्या यह पर्याप्त है? यह सब कुछ काफी है। –

+0

हां! यह आपको जवाब देने के लिए पर्याप्त होना चाहिए, मैं अभी इसे पार्स कर रहा हूं। – jv42

उत्तर

21

आपको अपनी एनआईबी/एक्सआईबी फ़ाइल में कोई त्रुटि है।

ऐसा लगता है कि आपने पहले आईबीओलेट (टेक्स्ट इनपुट) संलग्न किया है और अब कनेक्शन टूटा हुआ है। आपको इंटरफेस बिल्डर में सभी कनेक्शनों को दोबारा जांचना चाहिए।

2

अब मैं इसे देखता हूं! आपका क्रैश रिपोर्ट का कहना है:

Unknown class InterfaceBuilderAppDelegate_iPhone 

तो, ऐसा लगता है कि आप इस वर्ग के लिए आईबी में अपना ऐप प्रतिनिधि द्वारा सेट किए गए, लेकिन इस वर्ग अपनी परियोजना में उपलब्ध नहीं है। इसे देखो। या तो आपने कक्षा के नाम की गलत वर्तनी की है या आपको अपनी परियोजना में प्रासंगिक कक्षा जोड़नी चाहिए।

अत्यधिक संभावना है कि आपका टेक्स्ट फ़ील्ड इस ऐप प्रतिनिधि से जुड़ा हुआ है।

क्या आपने इंटरफेस बिल्डर में SimpleUIViewController आउटलेट में अपना टेक्स्ट फ़ील्ड कनेक्ट किया है?

चूंकि यह ट्यूटोरियल से लगता है कि आप MainWindow.xib का उपयोग नहीं कर रहे हैं, तो मैं कहूंगा कि आपकी परियोजना उचित प्रतिनिधि को चलाने में गुम है। में यह परिवर्तन करने की कोशिश करो अपने मुख्य:

पूर्णांक retval = UIApplicationMain (argc, argv, शून्य, @ "SimpleUIAppDelegate");

यदि मेरी परिकल्पना सही है, तो उसे आगे बढ़ाना चाहिए।

+0

ऐसा नहीं किया। मुझे अभी भी एक ही स्थान पर एक ही त्रुटि संदेश मिलता है। हालांकि, वास्तव में क्या किया? –

+0

और मैं मेनविंडो.एक्सिब –

+0

का उपयोग कर रहा हूं, मेरा संपादन देखें, कृपया ... – sergio

3

यह संभावना है कि आपने अपने सरल UIViewController के xib में गलत तरीके से UIViewController के लिए 'फ़ाइल का स्वामी' प्रकार सेट किया है।कृपया इसे पहचान निरीक्षक फलक में SimpleUIViewController पर सेट करें।

0

धागा 1 कार्यक्रम सिंघल sigabrt recived

कुछ समय NSString मूल्य है nill को जाता है!

यह आपके आवेदन की शुरुआत के दौरान इसका कारण बन सकता है!

2

इसे ठीक करने के लिए, इंटरफ़ेस बिल्डर में XIB लोड करें, फ़ाइल इंस्पेक्टर टैब का चयन करें, और ऑटोलायआउट का उपयोग अनचेक करें। वैकल्पिक रूप से, यदि आप पूरी तरह से ऑटोलाउटआउट होना चाहते हैं, तो आप आईओएस 6.0 + -ऑनली डिवाइस को लक्षित कर सकते हैं और न्यूनतम लक्ष्य बदल सकते हैं।

NSLayoutConstraint SIGABRT on iPad

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