2010-06-13 5 views
0

У меня есть следующий код в моем файле AppDelegate.h:App Crashes Загрузка View контроллеры

@class mainViewController; 
@class AboutViewController; 
@interface iSearchAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    mainViewController *viewController; 
AboutViewController *aboutController; 
UINavigationController *nav; 

} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet mainViewController *viewController; 
@property (nonatomic, retain) IBOutlet AboutViewController *aboutController; 
@property (nonatomic, retain) IBOutlet UINavigationController *nav; 
[...IBActions declared here...] 
@end 

Затем в моей .m файл:

@implementation iSearchAppDelegate 

@synthesize window; 
@synthesize viewController, aboutController, settingsData, nav, engines; 


- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    [window addSubview:nav.view]; 
    [window addSubview:aboutController.view]; 
    [window addSubview:viewController.view]; 

    [window makeKeyAndVisible]; 

} 

-(IBAction)switchToHome{ 
    [window bringSubviewToFront:viewController.view]; 
} 
-(IBAction)switchToSettings{ 
    [window bringSubviewToFront:nav.view]; 
} 
-(IBAction)switchToAbout{ 
    [window bringSubviewToFront:aboutController.view]; 
} 


- (void)dealloc { 
    [viewController release]; 
    [aboutController release]; 
    [nav release]; 
    [window release]; 
    [super dealloc]; 
} 

@end 

Как-то, когда я запустить приложение, основное представление выглядит прекрасно ... однако, когда я пытаюсь выполнить действия для переключения представлений, приложение вылетает с EXC_BAD_ACCESS.

Итак, я думаю, что это имеет какое-то отношение к управлению памятью, но я не совсем уверен.

Благодарим за любую помощь заранее.

Ссылка на скриншоты код здесь: link ...

РЕШИТЬ: Я исправил проблему, вынимая IBActions и делают их в обычные методы ... видимо, XCode не например, когда вы добавляете IBActions в AppDelegate.

ответ

0

... Сообщение отправлено высвобождены, например ...

Если это управление памятью, мой первый шаг должен был бы enable NSZombie и узнать, что в настоящее время обменивались сообщениями после dealloc'ed. Две очевидные вещи, о которых я могу думать:

  1. Неинициализированное имущество/переменная.
  2. De распределённая (не сохраняется) свойство

ли ваши элементы управления в интерфейсе строителем был подключен к IBAction с?

+0

Спасибо. Я исправил проблему. По-видимому, именно IBActions вызывало катастрофу приложения, я думаю, вы не можете иметь IBActions с делегатом приложения. – element119

0

Где-то в вашем коде вы вызываете [iSearchAppDelegate performSelector:withObject:withObject:]. Вы не указали этот код здесь, но, скорее всего, там, где проблема.

+0

Возможно ли, что этот метод вызывается другим методом? Потому что я определенно никогда не набрал метод «performSelector» ... – element119