it-swarm.com.de

Ziel C, Thread 1 Programm empfangenes Signal SIGABRT

Ich versuche, ein einfaches Tutorial für eine Objective C-App mit Interface Builder zu kompilieren und auszuführen. Ich verwende Xcode 4.0.2 und simuliere auf iOS (iPhone) 4.3

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

Wenn ich das Projekt erstelle, wird es in Ordnung erstellt, aber sobald die App versucht, es auszuführen, stürzt es ab mit:

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

Ich bekomme den Fehler in Zeile 4: int retVal = UI ... Thread 1: Programm empfangenes Signal "SIGABRT".

Wenn die anderen Dateien dieses Projekts zur Verdeutlichung zur Verfügung gestellt werden müssen, kann ich das tun.

Vielen Dank!

Bearbeiten:

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

Fehlermeldung:

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) 

Ich bin neu in obj-c und habe absolut keine Ahnung, was ich in Bezug auf diese Fehlermeldung sehe. Irgendeine Hilfe?

16
eric.mitchell

Sie haben einen Fehler in Ihrer NIB/XIB-Datei.

Anscheinend haben Sie zuvor ein IBOutlet (textInput) angehängt, und jetzt ist die Verbindung unterbrochen. Sie sollten alle Verbindungen im Interface Builder noch einmal überprüfen.

21
jv42

Es ist wahrscheinlich, dass Sie den Typ des "Dateieigentümers" falsch auf UIViewController im Xib Ihres SimpleUIViewControllers eingestellt haben. Bitte setzen Sie es im Identity-Inspector-Fenster auf SimpleUIViewController.

3
ZhangChn

Jetzt sehe ich es! Ihr Absturzbericht sagt:

Unknown class InterfaceBuilderAppDelegate_iPhone

Es scheint also, dass Sie Ihren App-Delegierten in IB auf diese Klasse festgelegt haben, aber diese Klasse ist in Ihrem Projekt nicht verfügbar. Überprüfen Sie dies. Entweder haben Sie den Klassennamen falsch geschrieben oder Sie sollten die relevante Klasse Ihrem Projekt hinzufügen.

Sehr wahrscheinlich ist Ihr Textfeld mit diesem App-Delegierten verbunden.

Haben Sie Ihr Textfeld im Interface Builder mit dem Ausgang SimpleUIViewController verbunden?

Da es im Tutorial so aussieht, als würden Sie MainWindow.xib nicht verwenden, würde ich sagen, dass Ihr Projekt den richtigen Delegaten ausführt. Versuchen Sie, diese Änderung in Ihrer Hauptsache vorzunehmen:

int retVal = UIApplicationMain (argc, argv, nil, @ "SimpleUIAppDelegate");

Wenn meine Hypothese richtig ist, sollte sich das nach vorne bewegen.

2
sergio

Um dies zu beheben, laden Sie das XIB in Interface Builder, wählen Sie die Registerkarte Datei-Inspector und deaktivieren Sie die Option Autolayout verwenden. Alternativ können Sie nur Geräte mit iOS 6.0 oder höher als Ziel verwenden und das Mindestziel ändern, wenn Sie unbedingt ein automatisches Layout benötigen.

NSLayoutConstraint SIGABRT auf dem iPad

2
HenriqueAdriano

thread 1 Programm empfangene Signal Sigabrt 

manchmal geht der NSString-Wert auf Null!

dies kann dazu führen, dass Ihre Anwendung initialisiert wird!

0
kiran