应用程序崩溃加载视图控制器
我在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,使他们进入正规的方法解决了该问题......显然,XCode的不喜欢它,当你把IBActions放在AppDelegate中。
...发送到释放实例的消息...
如果是内存管理,我的第一个步骤将是enable NSZombie
和发现被dealloc'ed以后有什么正在传递消息。两件明显的事情我可以想到:
- 未初始化的属性/变量。
- 解分配(非保留)财产
有你的界面生成器控制被连接到IBAction
S'
在您的代码中的某处,您正在调用[iSearchAppDelegate performSelector:withObject:withObject:]
。你没有在这里显示这些代码,但这可能是问题所在。
该方法是否可能被另一个方法调用? 因为我绝对没有输入“performSelector”方法...... – element119 2010-06-13 06:08:32
谢谢,我解决了这个问题 - 显然,这是导致应用程序崩溃的IBActions,我猜你不能通过应用程序委托来执行IBActions。 – element119 2010-06-13 20:26:29