En mi aplicación utilizo UIAlertView para mostrar al usuario un mensaje y algunas opciones. Dependiendo del botón presionado, quiero que la aplicación realice algo en un objeto. El código de ejemplo que utilizo es ...¿Cómo pasar con seguridad un objeto de contexto en un delegado de UIAlertView?
-(void) showAlert: (id) ctx {
UIAlertView *baseAlert = [[UIAlertView alloc]
initWithTitle: title
message: msg
delegate:self
cancelButtonTitle: cancelButtonTitle
otherButtonTitles: buttonTitle1, buttonTitle2, nil];
//baseAlert.context = ctx;
[baseAlert show];
[baseAlert release];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
id context = ...;//alertView.context;
[self performSelectorOnMainThread:@selector(xxx:) withObject: context waitUntilDone: NO];
}
}
¿Hay alguna manera de pasar un objeto en el delegado como un objeto de contexto? o tal vez de alguna otra manera?
Podría agregar la propiedad en el delegado pero el mismo objeto delegado está siendo utilizado por muchas vistas de alerta diferentes. Por este motivo, preferiría una solución en la que el objeto de contexto se adjunte a la instancia de UIAlertView y se transmita al delegado como parte del objeto UIAlertView.
"La dirección debe ser constante en el teléfono" <- dicha dirección es un puntero a un objeto, y como tal no se puede confiar en que se mantenga constante. El resto de su respuesta es sensata, solo quería señalar esto para referencia futura, en caso de que alguien más aterrizara en esta página. – Morpheu5