This is pretty much a note to self but might help some other poor shmuck out there who fails to notice, as I did, a seemingly unimportant bit of a reference page.
Here is the problem - You create and initialise a UIAlertView or UIActionSheet object and your application crashes with EXC_BAD_ACCESS. "How can this be?" you wonder, it's a brand new object, how the hell is it accessing bad memory?
Well the error is misleading, in fact you have probably not read the reference page right. If you fail to terminate the otherButtonTitles parameter with a nil like this:
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"some title" message:@"a message" delegate:delegate cancelButtonTitle:@"cancel" otherButtonTitles:@"foo", nil]
Then you get the EXC_BAD_ACCESS error, not, as you might reasonably expect an error telling you that the parameters were wrong.
I lost a lot of hours learning that so you don't have to.