У меня проблема со вторым учебным пособием для приложения в apple tut site. В основном классе я получаю сообщение об ошибке.Почему я получаю «непризнанный селектор, отправленный экземпляру»?
Код:
#import "birdwatchingAppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([birdwatchingAppDelegate class]));
} }
Ошибка:
[birdwatchingViewController viewControllers]: unrecognized selector
sent to instance 0x6d37000'
Ниже где расположение ошибки:
import "birdwatchingAppDelegate.h"
#import "BirdSightingDataController.h"
#import "birdwatchingViewController.h"
@implementation birdwatchingAppDelegate
@synthesize window = _window, dataController = _dataController, firstViewController = _firstViewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
birdwatchingViewController *firstViewController = (birdwatchingViewController *)[[navigationController
viewControllers] objectAtIndex:0];
BirdSightingDataController *aDataController = [[BirdSightingDataController alloc] init];
firstViewController.dataController = aDataController;
return YES;
}
и точная линия, которая вызывает проблемы является:
birdwatchingViewController *firstViewController = (birdwatchingViewController *)[[navigationController
viewControllers] objectAtIndex:0];
Я не могу найти проблему, может ли кто-нибудь помочь?
спасибо ..
EDIT:
путем добавления NSLog я получил следующее:
2012-02-10 11:24:06.059 Birdwatching[3057:f803] birdwatchingViewController
2012-02-10 11:24:06.060 Birdwatching[3057:f803] -[birdwatchingViewController viewControllers]: unrecognized selector sent to instance 0x6878250
EDIT на основе комментариев:
2012-02-10 11:51:20.696 Birdwatching[3152:f803] navi : <birdwatchingViewController: 0x6a49c20>
добавить эту строку до строки с крахом - NSLOG (@ "% @", [[navigationController class] description]); – NeverBe
Пожалуйста, сделайте сами и сделайте коллегам пользу и придерживайтесь соглашений об именах: имена классов должны начинаться с символов верхнего регистра, как в 'BirdwatchingViewController' и' BirdwatchingAppDelegate'. То же самое верно для всех настраиваемых типов (например, перечислений). Переменные и методы должны начинаться с символов нижнего регистра. – DarkDust