升级到xcode 4.2现在dimissModalViewcontroller上的exc_bad_access

时间:2011-12-28 23:43:49

标签: objective-c xcode4.2 exc-bad-access

嗨,我有一个奇怪的问题。

我的应用程序基于“PageControl”的示例代码(Apple示例)。 它使用水平滚动视图,其中大部分内容正在发生。 在他的底部,我有一个UIToolbar,我称之为模态视图控制器。

在XCode 4上,一切都像魅力一样,在升级到XCode 4.2之后(使用新的SDK)我在dimissModalViewcontroller上获得了“exc_bad_access”。 最有趣的是,它不会立即发生,而是仅在2到3次呈现和解除modalViewcontroller之后。

为简化起见,我回到了原始的samplecode,并尝试在该上下文中实现modalVieWcontroler。到目前为止没有运气。

在原始的PageControl代码中,我将“ContentController”的类型从NSObject更改为UIViewController,如下所示:

@interface ContentController : UIViewController
{
    NSArray *contentList;
}

我在一个名为PhoneContentController的子类(来自ContentController)中调用presentModalViewcontroller,如下所示:(我使用通知,所以我可以从任何地方调用它)

-(void) showExplanationsModal:(NSNotification*)notification{

    ExplanationsViewController *xplViewController = [[[ExplanationsViewController alloc] initWithNibName:@"Explanations" bundle:nil]autorelease];

    [self presentModalViewController:xplViewController animated:YES];
}

从模态视图本身调用modalViewcontroller的解雇,如下所示: (通知用于启动其他一些东西)

 - (IBAction)onClose
{
    [self dismissModalViewControllerAnimated:YES];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:self];

}

此代码适用于iOS4 SDK,但偶尔使用iOS5 SDK呈现excec_bad_access。 当我使用iOS4 SDK编译应用程序时,它在iOS5设备上也很好。 我尝试使用Zombies,但这并没有指向特定的过度释放对象。 我已经有几天坚持这个......

我已经提供了一个示例项目的副本,用于说明问题http://www.sesni.biz/pagecontrol.zip

2 个答案:

答案 0 :(得分:1)

对我来说,问题出现在onClose方法中。首先尝试发送消息,不带对象(此对象很快就会失效)。

 - (IBAction)onClose
{
    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:nil];
    [self dismissModalViewControllerAnimated:YES];

}

答案 1 :(得分:0)

发现问题:我将ContententController的类型从NSObject更改为UIViewcontroller。这适用于iOS4 SDK但与iOS5 SDK崩溃。