Startfunktion B 3 Sekunden nach Funktion A beenden (mit MBProgressHUD)

  • Ich möchte ein UIActionSheet ein paar Sekunden nach dem Beenden einer Funktion anzeigen, die mit Funktion B ausgeführt wird.

    es funktioniert gut, wenn ich es mag this:

     main function
    {
    [self function A]
    [self performSelector:@selector(function B) withObject:nil afterDelay:5];
    }
     

    aber ich benutze MBProgressHUD als Aktivitätsindikator:

     main function
    {
    [HUD showWhileExecuting:@selector(funcion A) onTarget:self withObject:nil animated:YES];
    [self performSelector:@selector(function B) withObject:nil afterDelay:5];
    }
     

    funktioniert nicht, Funktion B wird nie aufgerufen. Wenn ich auf [Selbstfunktion B] umschalte, wird es aufgerufen. Ich vermute, das ist ein Problem mit dem Threading, das ich noch nicht verstehe. Wenn ich [self performSelectorOnMainThread] verwende, wird es die Funktion B aufrufen, aber es sieht nicht so aus, als könnte ich die verzögern.

    24 August 2011
    Padin215
1 answer
  • Ihr Problem ist, dass das HUD für den Haupt-Thread aufgerufen wird und nicht auf Warten eingestellt ist. Sie löst also Ihre FunktionA aus und ruft Ihren performSelector sofort für Funktion B auf. Wenn Sie möchten, dass Funktion B korrekt ausgeführt wird, müssen Sie sie am Ende von Funktion A aufrufen.

    05 January 2012
    Bill Burgess