Réponses:
Oui, il y a + [NSThread sleepForTimeInterval:]
(Juste pour que vous sachiez pour les questions futures, Objective-C est le langage lui-même; la bibliothèque d'objets (l'un d'entre eux au moins) est Cocoa.)
Dormir une seconde en Java:
Thread.sleep(1000);
Dormir pendant une seconde en Objectif C:
[NSThread sleepForTimeInterval:1.0f];
Pourquoi dormez-vous? Lorsque vous dormez, vous bloquez l'interface utilisateur et le chargement de toute URL d'arrière-plan pas dans d'autres threads (l'utilisation des méthodes asynchrones NSURL fonctionne toujours sur le thread actuel).
Il y a de fortes chances que vous souhaitiez vraiment performSelector: withObject: AfterDelay. C'est une méthode sur NSObject que vous pouvez utiliser pour appeler une méthode à un intervalle prédéterminé plus tard - elle planifie un appel qui sera effectué ultérieurement, mais tous les autres éléments que le thread gère (comme l'interface utilisateur et les charges de données) continuer encore.
Bien sûr, vous pouvez également utiliser les appels standard Unix sleep () et usleep (). (Si vous écrivez Cocoa, je resterais avec le [NSThread sleepForTimeInterval:], cependant.)
Si vous utilisez NSThread sleepForTimeInterval (code commenté) pour dormir, la récupération des données sera bloquée, mais + [NSThread sleepForTimeInterval:] (méthode checkLoad) ne bloquera pas la récupération des données.
Mon exemple de code comme ci-dessous:
- (void)viewDidAppear:(BOOL)animated
{
//....
//show loader view
[HUD showUIBlockingIndicatorWithText:@"Fetching JSON data"];
// while (_loans == nil || _loans.count == 0)
// {
// [NSThread sleepForTimeInterval:1.0f];
// [self reloadLoansFormApi];
// NSLog(@"sleep ");
// }
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
}
-(void) checkLoad
{
[self reloadLoansFormApi];
if (_loans == nil || _loans.count == 0)
{
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
} else
{
NSLog(@"size %d", _loans.count);
[self.tableView reloadData];
//hide the loader view
[HUD hideUIBlockingIndicator];
}
}