Richtige Art und Weise zu verwenden UIActionSheet Delegieren? Zeiger Zugeordnet, die identische Speicher

Ich bin mit dem actionSheet variable übergeben actionSheet:didDismissWithButtonIndex: vergleichen Sie die Berufung actionSheet, um eine Liste der UIActionSheet Variablen in meiner Klasse. Dies scheint so zu sein, wie die delegate-Methode wurde entwickelt, zur Unterscheidung zwischen den Ereignissen.

- (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;
    }
}

}

Jedes mal, wenn ein UIActionSheet angezeigt wird, ich alloc eine Instanz von UIActionSheet zu einem der class-Variablen, einstellen der Eigenschaften von Anzeige, Darstellung, und lassen Sie es.

Diese reibungslos funktioniert, auf den ersten. Das problem ist, dass nach der Ausführung für eine Weile, schließlich auch UIActionSheet-Pointer (Klasse Variablen actionSheet1 & actionSheet2 im code-Beispiel oben) wird am Ende zeigt auf den gleichen Speicher, je nachdem, was passiert zur Laufzeit, wodurch die beiden if-Anweisungen in der delegate-Methode zu true ausgewertet. Nicht gut.

Nun, wenn ich alloc jeder UIActionSheet nur einmal pro run und halten Sie die memory (nie aufrufen, release), sollte dies nicht passieren. Aber ich bin versucht, konservativ zu sein hier. Hat Apple die Absicht, dass der Delegat auf diese Weise verwendet werden?

InformationsquelleAutor Carson C. | 2009-03-03
Schreibe einen Kommentar