Diese Zeile ruft nach 3 Sekunden den Selektor secondMethod auf:
[self performSelector:@selector(secondMethod) withObject:nil afterDelay:3.0 ];
Verwenden Sie es bei Ihrer zweiten Operation mit der gewünschten Verzögerung. Wenn Sie viel Code haben, platzieren Sie ihn in einer eigenen Methode und rufen Sie diese Methode mit auf performSelector:
. Es wird die Benutzeroberfläche nicht wie blockierensleep
Bearbeiten: Wenn Sie keine zweite Methode möchten, können Sie eine Kategorie hinzufügen, um Blöcke mit performSelector verwenden zu können:
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [block copy];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block
{
block();
}
@end
Oder vielleicht sogar sauberer:
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
dispatch_get_current_queue(), block);
}