¿Manera correcta de usar UIActionSheet Delegate? Punteros asignados a la memoria idéntica

StackOverflow https://stackoverflow.com/questions/606733

Pregunta

Estoy usando la variable actionSheet pasada por actionSheet: didDismissWithButtonIndex: para comparar el actionSheet de llamada con una lista de variables UIActionSheet en mi clase. Esta parece ser la forma en que se diseñó el método de delegado para diferenciar entre eventos.

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

if (actionSheet == actionSheet1) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

if (actionSheet == actionSheet2) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

}

Cada vez que se muestra una UIActionSheet, asigno una instancia de UIActionSheet a una de las variables de clase, configuro las propiedades de visualización, la muestro y la libero .

Esto funciona sin problemas, al principio. El problema es que después de ejecutarse por un tiempo, eventualmente ambos punteros UIActionSheet (variables de clase actionSheet1 & amp; actionSheet2 en el ejemplo de código anterior) terminarán apuntando a la misma memoria, dependiendo de lo que suceda en el tiempo de ejecución, lo que provocará ambas afirmaciones en el Método delegado para evaluar verdadero. No es bueno.

Ahora, si tuviera que asignar cada UIActionSheet solo una vez por ejecución y retener la memoria (nunca llamar a la versión), esto no debería suceder. Pero estoy tratando de ser conservador aquí. ¿Apple tiene la intención de que el delegado se utilice de esta manera?

¿Fue útil?

Solución

Cuando crees tu UIActionSheet, dale una etiqueta:

actionSheet.tag = 1; // or 2 or 3 or ...

Luego, en su método de delegado, cambie según la etiqueta para determinar el comportamiento de esa hoja en particular.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top