web-dev-qa-db-fra.com

iOS Swift: fermetures (rappels) par rapport aux délégués, quand les utiliser?

Personnellement, je préfère le rappel au délégué dans Swift pour les corrélations logiques simples, car c'est assez simple et facile à comprendre. En même temps, certains préfèrent le délégué, car la délégation est un modèle populaire dans d'autres langages, tels que C #.

Il y a quelques discussions que j'ai trouvées en ligne:

1. "Pourquoi vous ne devriez pas utiliser de délégués dans Swift?" https://medium.cobeisfresh.com/why-you-shouldn-t-use-delegates-in-Swift -7ef808a7f16b # .hqb7zrc1v

2. Apple se concentre davantage sur le modèle de rappel https://www.reddit.com/r/Swift/comments/2ces1q/ closures_vs_delegates /

3. des blocs ou des délégués? http://blog.stablekernel.com/blocks-or-delegates/

Après avoir lu ces discussions, je suis encore indécis sur la préférence. Je voudrais savoir quand est préférable d'utiliser des fermetures et quand est-il préférable d'utiliser des délégués? et les raisons?

Merci!

20
RainCast

(Réponse basée sur l'opinion pour une question basée sur l'opinion)

La question ne devrait pas être celle qui est la meilleure, elle devrait être la meilleure solution au problème que j'essaie de résoudre.

Ma règle simple: si quelque chose nécessite une fonction comme interface, un rappel est généralement une bonne solution. Si plusieurs fonctions sont requises, en particulier lorsqu'elles sont requises pour la fonction de base d'un objet, un délégué est probablement une meilleure solution.

Comme toujours, cela dépend de la situation spécifique, mais les énoncés absolus fonctionnent rarement dans le monde réel.

27
PeejWeej