views:

276

answers:

1

I create a UIActionSheet with button texts from a txts file. After I set NSZombieEnabled, NSDebuEnabled to YES and NSDeallocateZombies to NO, I get a breakpoint with the message:

* -[CFString isEqual:]: message sent to deallocated instance 0x11fae00

This happens after showing for the third or fourth time the UIActionSheet, not immediatelly. The code were this happens is:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringFromTable( @"text", @"class", @"text" )
                                                        delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil
                                                        otherButtonTitles:NSLocalizedStringFromTable( @"text1", @"class", @"text1" ),
                                                            NSLocalizedStringFromTable( @"text2", @"class", @"text2" ),
                                                            NSLocalizedStringFromTable( @"text3", @"class", @"text3" ), nil];
[actionSheet showFromTabBar:self.tabBarController.tabBar]; 
[actionSheet release];

If I remove NSDealocateZombies, there are no more crashes in the simulator, but I get warnings in the console:

[CFString _cfTypeID]: message sent to deallocated instance

Did you encountered such problems? Is it wrong to get repeatedly the strings from the resource? As a last solution, I was thinking to put them in member variables once, thus avoiding another calll to NSLocalizedStringFromTable for the same text.

A: 

Eventually found the problem somewhere else: a NSString obtained through NSLocalizedStringFromTable was later released although there was no retain done on it. The fun part is that the crash was happening inside the system framework in a completely different class. So it seems that over-releasing was the cause after all.

Mihai