J'essaie de comprendre le concept des blocs. Ce que j'ai lu jusqu'ici semble être conceptuellement similaire aux fonctions anonymes en JavaScript. Est-ce correct?Les blocs Objective-C sont-ils similaires aux fonctions anonymes dans JavaScript?
Répondre
Oui, pour la plus grande partie. Les blocs sont kind-of fonctions C traitées kind-of comme des objets qui peuvent capturer des variables de la portée environnante. Les fonctions anonymes sont équivalentes à des blocs, mais certainement pas identiques en raison de la machinerie de blocs en coulisses plutôt compliquée. Par exemple, si vous prévoyez d'utiliser un bloc après/en dehors de la fonction/méthode qui définit le bloc n'est plus actif - c'est le cas si vous définissez le bloc comme une propriété quelque part ou utilisez dans GCD (un multi -core bibliothèque de mise en file d'attente d'opération), vous devez le copier avec Block_copy()
(ou [aBlock copy]
). Je ne vais pas entrer dans les détails, mais ce n'est certainement pas quelque chose que vous faites avec les fonctions JS (anonymes). Cela a à voir avec le fait que le bloc les littéraux sont alloués sur la pile (et pas quelque part dans le code) et que vous devez le copier dans le tas si vous voulez qu'il persiste.
Cela peut devenir assez compliqué (mais plutôt beau dans sa conception), mais pour la plupart des cas d'utilisation, c'est plutôt facile et vous pouvez le traiter comme des fonctions JS anonymes. ;-)
Oui. Les blocs dans Objective-C sont des fermetures.
- 1. Confusion avec "cet" objet dans les fonctions anonymes de JavaScript
- 2. Comment utiliser les fonctions anonymes dans PHP5.3
- 3. Joindre des paramètres avec des fermetures javascript aux paramètres par défaut dans les fonctions anonymes
- 4. JavaScript comme des fonctions anonymes en C#
- 5. Comment les données sont-elles transmises aux fonctions anonymes en JavaScript?
- 6. Blocs de code anonymes dans Groovy
- 7. Fonctions anonymes accédant aux variables locales [ActionScript - Flex 3.5]
- 8. Les fonctions anonymes sont-elles autorisées?
- 9. Prototype JavaScript limité aux fonctions?
- 10. exécution de fonctions anonymes créées avec JavaScript eval()
- 11. simplifier la liaison des fonctions javascript anonymes à la classe
- 12. Syntaxe des fonctions anonymes dans CoffeeScript
- 13. PHP fonctions anonymes portée question
- 14. Ayant des problèmes avec des fonctions anonymes JavaScript
- 15. fonctions anonymes et des cartes dans Scala
- 16. Liaison de fonctions anonymes partout
- 17. fonctions anonymes en plusieurs étapes
- 18. Quelqu'un peut-il expliquer la différence entre les fonctions de fermeture et les fonctions anonymes?
- 19. L'utilisation de fonctions anonymes affecte-t-elle les performances?
- 20. Comment afficher/masquer les mêmes blocs à l'intérieur des blocs similaires avec JQuery
- 21. Blocs Smalltalk dans Objective-c?
- 22. jQuery/JavaScript - passage de variables aux fonctions
- 23. Comment SVD fonctionne pour trouver des blocs similaires dans l'image?
- 24. les variables Passing aux fonctions
- 25. Analyseur AMF0 dans ObjectiveC
- 26. Passage d'arguments aux classes internes anonymes
- 27. Ajout de fonctions arbitraires aux objets dom dans javascript/jquery
- 28. simples javascript, les fonctions dans les objets
- 29. Dans zsh, comment transmettre des tableaux anonymes dans des fonctions?
- 30. Fonctions anonymes (lambdas, fermetures) en PHP 4