应用程序崩溃加载视图控制器

时间:2010-06-13 01:37:40

标签: iphone objective-c

我的AppDelegate.h文件中有以下代码:

@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并将它们变成常规方法解决了这个问题...显然,当您将IBActions放入时,XCode不喜欢它一个AppDelegate。

2 个答案:

答案 0 :(得分:0)

在代码的某处,您正在调用[iSearchAppDelegate performSelector:withObject:withObject:]。您没有在此处显示该代码,但这可能是问题所在。

答案 1 :(得分:0)

  

...消息发送到解除分配的实例...

如果是内存管理,我的第一步是enable NSZombie并发现被解除分组后正在发送消息的内容。我能想到的两个显而易见的事情:

  1. 未初始化的财产/变量。
  2. 解除分配(非保留)财产
  3. 让界面构建器中的控件连接到IBAction s?