upgraded to xcode 4.2 now exc_bad_access on dimissModalViewcontroller

南楼画角 提交于 2019-12-11 02:38:11

问题


Hi I'm having a weird problem.

My app is based on the samplecode of "PageControl" (the Apple example). It uses a horizontal scrollview in which most of the stuff is happening. At he bottom I have a UIToolbar from which I call a modal viewcontroller.

On XCode 4 everything worked like a charm, after the upgrade to XCode 4.2 (with the new SDK) I get a "exc_bad_access" on dimissModalViewcontroller. The funniest thing is that it does not happen rightaway but only after 2 or 3 times presenting and dismissing the modalViewcontroller.

To simplify things I went back to the original samplecode and tried to implement the modalVieWcontroler in that context. No luck so far.

In the original PageControl Code I changed the type of "ContentController" from NSObject to UIViewController like so:

@interface ContentController : UIViewController
{
    NSArray *contentList;
}

I call presentModalViewcontroller in a sub class (from ContentController) named PhoneContentController like so:(I use a notification so I can call it from anywhere)

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

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

    [self presentModalViewController:xplViewController animated:YES];
}

The dismissal of the modalViewcontroller is called from the modal view itself like so: (the notification is used tot initiate some other stuff)

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

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

}

This code works fine with iOS4 SDK but renders occasional excec_bad_access with iOS5 SDK. When I compile the app with iOS4 SDK it also rus fine on iOS5 devices. I tried using Zombies but this does not point to a specific over-released object. I'm sort of stuck on this one for a few days already ...

I have put up a copy of a sample project that illustrates the problem here http://www.sesni.biz/pagecontrol.zip


回答1:


It seems for me that problem is in the onClose method. Try first sending the message, without the object (this object will be invalidated soon).

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

}



回答2:


Found the problem: I changed the type of ContententController from NSObject to UIViewcontroller. This worked fine with the iOS4 SDK but crashes with iOS5 SDK.



来源:https://stackoverflow.com/questions/8662550/upgraded-to-xcode-4-2-now-exc-bad-access-on-dimissmodalviewcontroller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!