嗨,我有一个奇怪的问题。
我的应用程序基于“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
答案 0 :(得分:1)
对我来说,问题出现在onClose
方法中。首先尝试发送消息,不带对象(此对象很快就会失效)。
- (IBAction)onClose
{
[[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:nil];
[self dismissModalViewControllerAnimated:YES];
}
答案 1 :(得分:0)
发现问题:我将ContententController的类型从NSObject更改为UIViewcontroller。这适用于iOS4 SDK但与iOS5 SDK崩溃。