I’m amused by a strange error that I’m encountering in my program.
I have a tableViewController with a navigationBar. When the user clicks on an ADD button on the navigationBar, they’re presented with a modal tableViewController. This viewController has a CANCEL button on its navigationBar (which dismisses the viewController via delegation)
The tableViewController has custom cells containing UIButtons, a UITextField and a UITextView.
The error is caused by following this sequence of actions (and no other):
- I type some text into the
UITextView(which is located in one of the cells) - Without dismissing the keyboard, I then scroll the
tableViewupwards. - I hit the cancel button (so that the modal view controller is dismissed)
- Back in the main
tableViewController, I tap theADDbutton again,
I get the exec_bad_access error.
Nothing else causes this error.
If I try exactly the same procedure but with the UITextField instead, things are fine.
Also if I exclude any of the listed steps from the above sequence, things are fine.
I’m pretty confused. Could it be a bug?
Update
I tried using NSZombie to figure out what’s causing the error. This is what I see in the console:
MyApp[14402:207] *** -[UIWebDocumentView isKindOfClass:]: message sent to deallocated instance 0x200a800
I don’t have much code for this; the cells are created in interface builder. Here’s the method which brings up the modalViewController
- (void)createNewEntry:(id)sender {
CreateNewEntryViewController *createNewEntryVC = [[CreateNewEntryViewController alloc] initWithNibName:@"CreateNewEntryViewController" bundle:nil];
createNewEntryVC.delegate = self;
UINavigationController *createNewEntryNavigationController = [[UINavigationController alloc] initWithRootViewController:createNewEntryVC];
[createNewEntryVC release];
[self presentModalViewController:createNewEntryNavigationController animated:YES];
[createNewEntryNavigationController release]; }
Final Edit:
I found the solution to my problem, maybe it will solve yours too. (Look at my answer to this question:) UIButton, created by Interface Builder, is crashing
Specifically, if your buttons have any images, try deleting them from your project, getting fresh copies, renaming them, re-adding them to the project and then hooking them up again. Seems to have worked in my case.
Previous randomness from me:
(Not an answer, but…) For what it’s worth, I’m getting a similar message. Maybe adding what I’m seeing might help figure this all out. I get this both in the Simulator and on the device.
-[UIImage isKindOfClass:]: message sent to deallocated instance 0x1661f0This message is not always identical for me, sometimes its about retaining an invalid instance, or a few other similar sorts of things. None of these are things I’m doing myself, but behind the scenes stuff.
EDIT: Here’s another one:
-[UIImage retain]: message sent to deallocated instance 0x3b621a0Here’s the code where I’m getting dumped (like you, I’m showing a modal dialog, though mine’s a custom UIView). In my case, I’m forcing the run loop to wait for a user response like this:
This modal dialog is built completely from a nib, and has a couple button images and shows correctly almost always. However, if I try to “rush it” by tapping many different UI elements before it comes up, I can get this error about 30-40% of the time. On one occasion, even though the dialog showed up, its Cancel button had the wrong graphic.
It almost seems like the showing of the view isn’t always completely loading everything correctly, or maybe in a timely manner.
For the moment, I’m going to try rewriting a bunch of code to remove the NSRunLoop business. We’ll see.
EDIT 2: No help
The NSRunLoop was definitely not the problem. I’ve narrowed it down much more and started a new question here: UIButton, created by Interface Builder, is crashing