Durch Antippen einer Schaltfläche in ViewController1 wird die Anwendung an ViewController2 weitergeleitet.CPU-intensiven Code ausführen, ohne UIViewController-Segment zu verzögern? Wie führe ich Code * nur einmal und nachher aus * hat sich der UIViewController selbst vorgestellt?
Das Tippen auf die Schaltfläche löst auch eine leicht CPU-intensive Operation aus. (d. h. Zusammenfügen mehrerer Bilder und Schreiben des Ergebnisses auf die Platte). Dieser Vorgang kann erst eingeleitet werden, wenn die Schaltfläche angetippt wird.
Der Nebeneffekt ist eine schlechte Benutzererfahrung. Die ViewController1-Schaltfläche bleibt einen Tick länger hervorgehoben und das Segment wird merklich verzögert.
Das Verschieben des intensiven Codes in ViewController2's viewDidLoad
Funktion scheint nicht hilfreich, da es eine Verzögerung erzeugt, aber auf der ViewController2-Seite nicht ViewController1.
Das Verschieben des Codes in ViewController2 viewDidAppear
scheint auch unerwünscht, da dieser Vorgang nur einmal ausgelöst werden sollte, nicht jedes Mal ViewController2 angezeigt wird. Das Hinzufügen einer Variablen, nur um zu verfolgen, ob die Operation ausgelöst wurde, scheint suboptimal zu sein.
Eine weitere Option ist, den Code in ViewController2's viewDidLoad
zu setzen, aber eine leichte Verzögerung mit dispatch_after
einzuführen, um sicherzustellen, dass der Code das Segment nicht beeinträchtigt.
Was ist der richtige Ansatz, um dieses Muster zu behandeln?
Gibt es eine andere UIViewController-Funktion, die für diesen Zweck verwendet werden sollte (d. H., Code wird nur einmal ausgeführt, und erst nachdem der UIViewController sich dem Benutzer präsentiert hat)?