Я не понимаю, почему это дает мне EXC_BAD_ACCESS.Базовый фон, я собираю и обрабатываю некоторую информацию, а затем использую модальное представление, чтобы позволить пользователю подтвердить, хочет ли он продолжить.
У меня есть кнопка на панели навигации, которая называется продолжить, которая вызывает мою функцию подготовки данных.
- (void)viewDidLoad {
//Other stuff
UIBarButtonItem *next = [[UIBarButtonItem alloc]
initWithTitle:@"Next"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(prepData)];
self.navigationItem.rightBarButtonItem = next;
[next release];
[super viewDidLoad];
}
prepData:
-(void)prepData{
/*
There's a bunch of stuff going on here, if "mensaje" is not an empty NSString, there is some kind of error that wont let me go on, if not, everything in the data is fine
*/
if(![mensaje isEqualToString:@""]){
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:nil
message:mensaje
delegate:nil
cancelButtonTitle:@"Aceptar"
otherButtonTitles:nil];
[alert show];
[alert release];
}else{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"¿Esta seguro que desea realizar estas operaciones?"
delegate:self
cancelButtonTitle:@"Cancelar"
destructiveButtonTitle:@"Aceptar"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
}
}
Если я отлаживаю, я могу пройти весь процесс через prepData (), как только я нажимаю продолжить, я получаю EXC_BAD_ACCESS.Если я закомментирую [actionSheet release];Я не получаю исключения, но, насколько мне известно, точно так же, как представления предупреждений, листы действий "держатся" до тех пор, пока не показывают.
По крайней мере все книги, которые я читал, утверждают это, но это вполне возможночто я не понимаю что-то в автоматическом выпуске.
Просто для справки, предупреждение просто замечательно.
У кого-нибудь есть идеи, что здесь происходит?
Спасибо, Стефано.
Редактировать: понял, приведенный выше код для листов действий и представлений предупреждений в порядке, проблема заключалась в том, что я выпускал что-то, что позже пыталось автоматически выпустить.
Iесть цикл for, который делает это:
for(someConditions){
NSString *montoFormateado = [[[NSString alloc] initWithFormat:@"%.2lf",[monto doubleValue]] stringByReplacingOccurrencesOfString:@"." withString:@","];
[_postBuild setObject:[NSString stringWithString:montoFormateado] forKey:[NSString stringWithString:iidvar]];
[montoFormateado release];
}
postBuild = [_postBuild mutableCopy];
[_postBuild release];
Теперь, похоже, ошибка заключалась в том, что при использовании [NSString strintWithString: montoFormateado] я оставлял эту строку для автоматического выпуска позже, но когда я выпустил _postBuildэта строка также была освобождена, я удалил ее и просто использовал setObject: montoFormateado и он работает нормально.
Утечка памяти, но я думаю, что это длядругой вопрос, exc_bad_access был решен.