Gibt es eine direktere Möglichkeit, in Cocoa eine bestimmte Zeit zu warten, als das, was ich unten erwähnt habe?Warten auf eine bestimmte Dauer in Cocoa
- (void) buttonPressed {
[self makeSomeChanges];
// give the user some visual feedback and wait a bit so he can see it
[self displayThoseChangesToTheUser];
[self performSelector:@selector(buttonPressedPart2:) withObject:nil afterDelay:0.35];
}
- (void) buttonPressedPart2: (id)unused {
[self automaticallyReturnToPreviousView];
}
einfach klar zu sein, gibt es kein funktionelles Problem mit diesem Code - mein einziges Rindfleisch ist ein stilistischen ein. In meinem Fall ist der Fluss einfach genug, dass es funktioniert, aber versuche es einzukapseln oder setze einige Bedingungen ein und die Dinge könnten hässlich werden. Es ist schon quälende Art von mir, dass ich nicht einen Weg zu warten und dann wieder auf den gleichen Punkt in Code wie dieses (fiktives) Beispiel finden könnte:
- (void) buttonPressed {
[self doStuff];
[UIMagicUnicorn waitForDuration:0.35];
[self doStuffAfterWaiting];
}
und beide aus den Thread blockiert etwas anderes zu tun. schlecht, wenn es in der Hauptsache U.I. Faden. – pestilence669
Wahr. Wenn die Benutzeroberfläche in diesem Zeitraum reagieren soll, ist der in der Frage vorgeschlagene Ansatz, ein NSTimer-Feuern (wie von Ihnen vorgeschlagen) oder ein Hintergrund-Thread, der diese Verzögerung durchführt, besser. –
Danke - darüber habe ich mich gewundert, wäre wahrscheinlich darüber gestolpert, wenn "schlafen" eines der vielen Synonyme für "warten" gewesen wäre, nach denen ich gesucht hatte. Danke auch an Pestilence für die Vorbehalte, wenn * diese * nicht benutzt werden. –