Создание приложения для iPhone в Xcode 4.1.1 - Программа получила сигнал "SIGABRT" - PullRequest
0 голосов
/ 09 сентября 2011

Я новичок в создании приложений для iPhone и только что начал с Xcode и получаю следующие ошибки; Ранее я использовал этот код как на симуляторе, так и на iPod touch, и он хорошо работал в обоих случаях, но по какой-то причине в последнее время он не позволяет мне переходить с одной страницы на другую без сообщения об ошибке «SIGABRT».

В основном в моем приложении мне нужно переходить с одной страницы на другую несколько раз, но это не сработает .... Кто-нибудь может помочь с этим, пожалуйста?

Это код, который кажется недовольным (он успешно выполняется и компилируется):

1  #import <UIKit/UIKit.h>
2
3  int main(int argc, char *argv[])
4  {
5    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
6    int retVal = UIApplicationMain(argc, argv, nil, nil);
7    [pool release];
8    return retVal;
9  }

Останавливается на строке int retVal ( 6-я строка ).

При отладке выдает ошибку:

2011-09-09 15: 33: 59.029 TruckFile [1072: b603] * Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[ setValue: forUndefinedKey:]: этот класс не соответствует значению ключа для окна ключей. '

Может кто-нибудь помочь мне с этим, пожалуйста?

Заранее спасибо!

========================================

Файлы кодов:

========================================

Главная страница (.h)

#import <UIKit/UIKit.h>
#import "ViewTwoController.h"
#import "TruckFileAppDelegate.h"


@interface TruckFileAppDelegate : NSObject <UIApplicationDelegate> {
        UIWindow *window;
        ViewTwoController *viewTwoContoller; 
        UINavigationController *navigationController;
}



@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator     *persistentStoreCoordinator;
@property (nonatomic, retain) ViewTwoController *viewTwoController;

-(IBAction)switchPage:(id)sender;


@end

=============================================== =

Главная страница (.m)

#import "TruckFileAppDelegate.h"
#import "ViewTwoController.h"

@implementation TruckFileAppDelegate


@synthesize window;
@synthesize navigationController;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
@synthesize viewTwoController;

-(IBAction)switchPage:(id)sender
{
if(self.viewTwoController == nil)
{
    ViewTwoController *viewTwo = [[ViewTwoController alloc]
                                      initWithNibName:@"ViewTwoController" bundle:[NSBundle mainBundle]];
    self.viewTwoController = viewTwo;
    [viewTwo release];
}

[self.navigationController pushViewController:self.viewTwoController animated:YES];
}


 - (void)dealloc {
[navigationController release];
[window release];
[super dealloc];
}

@end

====================================

Страница 2 (.ч)

#import <UIKit/UIKit.h>


 @interface ViewTwoController : UIViewController {

}

@end

=====================================

Страница 2 (.м)

#import "ViewTwoController.h"


    @implementation ViewTwoController


    - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
    }


    - (void)dealloc {
    [super dealloc];
    }


    @end

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

mainWindow.xib пытается связать свой экземпляр UIWindow с вашим UIApplicationDelegate, и он не может его найти (поэтому он жалуется, что не может установить значение для ключа НЕ УКАЗАНО).

Проверьте вашКласс UIApplicationDelegate имеет UIWindow iVar, свойство в своем .h, и он правильно синтезирован в его .m.

EDIT

Кто вызывает метод switchPage: on UIApplication?Если да, вы вызываете это не на том объекте.Вместо того, чтобы делать

[[UIApplication sharedApplication] switchPage:xxx];

Вы должны сделать:

[[[UIApplication sharedApplication] delegate] switchPage:xxx];

Поскольку метод switchPage: определен в классе UIApplicationDelegate.

0 голосов
/ 09 сентября 2011
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIApplication switchPage:]: unrecognized selector sent to instance 0x600beb0'

Это означает, что в вашем методе switchPage вы даете действие неизвестному идентификатору, возможно, проверяете имя идентификатора объекта и проверяете, инициализировали ли вы его в своем файле .h.

0 голосов
/ 09 сентября 2011

Ваш код не работает на

 [UIApplication switchPage:]:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...