En Java, vous pouvez suspendre l'exécution du thread en cours pendant un certain temps en utilisant Thread.sleep(). Y a-t-il quelque chose comme ça dans l'Objectif C?Quel est l'équivalent de Thread.sleep() de Java dans Objective-C/Cocoa?
Répondre
Oui, il y a +[NSThread sleepForTimeInterval:]
(Juste pour que vous savez pour les questions futures, Objective-C est la langue elle-même,. La bibliothèque d'objets (un d'entre eux au moins) est Cocoa)
Bien sûr , vous pouvez également utiliser les appels Unix sleep() et usleep() standard, aussi. (Si vous écrivez Cocoa, je resterais avec [NSThread sleepForTimeInterval:], cependant.)
Pourquoi dormez-vous? Lorsque vous dormez, vous bloquez l'interface utilisateur et tout chargement d'URL d'arrière-plan qui ne se trouve pas dans les autres threads (l'utilisation des méthodes asynchrones NSURL fonctionne toujours sur le thread en cours).
Les chances sont ce que vous voulez vraiment, c'est 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 - il planifie un appel qui sera effectué plus tard, mais tous les autres trucs que le thread traite (comme l'interface utilisateur et les charges de données) continuer encore.
Dormir est utile pour moi à des fins de test. Je peux simuler certains retards de réseau pour m'assurer que mon application répond correctement. Actuellement, je suis en train de tester sur un serveur web local, donc tout est essentiellement instantané. – brantonb
La mise en veille n'est pas la bonne façon de tester les délais réseau. Regardez la réponse à cette question http://stackoverflow.com/questions/1502060/iphone-intermittent-network-testing pour voir comment tester les vitesses variables des réseaux dans le simulateur. Parce que dormir le thread principal bloque tout, vous ne simulez pas du tout un retard réseau, mais plutôt une suspension de l'application. –
Dormir est utile pour simuler ce qui est fait lors d'une opération de jointure sur un thread JAVA. Vous dormez pendant 10 millis, vérifiez si le fil est mort alors vous pouvez le libérer. –
usleep() peut également être utilisé comme ive utilisé cela pour mettre en pause le fil en cours parfois
Si vous utilisez NSThread sleepForTimeInterval (code commenté) pour dormir, aller chercher les données seront bloquées, mais + [NSThread sleepForTimeInterval: ] (méthode checkLoad) ne bloque pas l'extraction de 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];
}
}
Dormir pour un seconde en Java:
Thread.sleep(1000);
Dormir pour un seconde en Objective C:
[NSThread sleepForTimeInterval:1.0f];
- 1. Utilisation de Thread.Sleep() dans un service Windows
- 2. Quel est l'avenir de Java 3D?
- 3. Quel est l'équivalent de l'objet d'application java?
- 4. Quel est l'équivalent C# de Java DecimalFormat?
- 5. Quel est l'équivalent Java de webmin?
- 6. ManualResetEvent contre Thread.Sleep
- 7. quel est l'équivalent .NET de @Deprecated dans java?
- 8. Pool d'objets partagés sans Thread.Sleep?
- 9. Quel est l'équivalent de l'énumération de Java en C#?
- 10. Quel est l'équivalent de AbstractMap de Java en C#?
- 11. Quel est l'équivalent VB des instanceof et isInstance() de Java?
- 12. Quel est le surcoût de mémoire d'une méthode Java?
- 13. Quel est l'équivalent de IntPtr (C#) en Java?
- 14. Quel est l'équivalent Ruby pour StringReader de Java?
- 15. Quel est l'équivalent C# de static {...} en Java?
- 16. Quel est l'équivalent .Net des Dynamic Proxies de Java?
- 17. Quel est l'espace de tas Java maximum pour SuSE Linux
- 18. Quel est le C# équivalent à isInstance() de Java?
- 19. Quel est le meilleur réseau IRC pour Java (#java)?
- 20. Quel est l'équivalent d'une applet Java dans .NET?
- 21. Quel est l'équivalent de TreeBidiMap en C#?
- 22. Quel est le point derrière les intersections de classes de caractères dans Java Regex?
- 23. Quel est l'objectif de Verifiable() dans Moq?
- 24. Quel est l'équivalent de 'go' dans MySQL?
- 25. Quel est l'équivalent de strtok_s dans VC7?
- 26. Quel est l'équivalent de HttpUtility.UrlEncode dans vb.net?
- 27. Quel est l'équivalent C# de java.util.regex?
- 28. Quel est l'équivalent de "ByteBuffer.flip" & "ByteBuffer.slice" dans .NET?
- 29. Quel est l'inconvénient de SqlBulkCopy
- 30. Quel est le but de la définition d'un paquet dans un fichier Java?
Thnx !
pour référence future, la définition est réellement + [NSThread sleepForTimeInterval:] (donc, utilisé comme [NSThread sleepForTimeInterval: 0.1]). – TinkerTank
C'est parfait. Merci! Je viens de finir mes blocs d'animation et ça a marché comme un charme. – RileyE
que diriez-vous de dormir sur le therad principal? – Dagon