J'ai le scénario suivant: un objet A
crée un objet B
qui devrait effectuer certaines opérations en fonction du choix de l'utilisateur. A
est délégué de B
. A
ne contient pas de référence au choix effectué par l'utilisateur (représenté par un autre objet C
), mais il le sait dans la méthode où il crée B
, et il doit savoir quel est le choix lorsque l'objet B
termine sa tâche et avertit de cela en appelant la méthode de protocole correspondante implémentée par A
.Gestionnaire d'achèvement VS détenant une référence: le plus approprié pour ce scénario dans Swift?
La première solution que je pense pour ce scénario est d'avoir une référence dans A
pour le choix C
, et l'accès dans la mise en œuvre de la méthode de protocole qui B
appels quand il se termine. Mais peut-être qu'il serait préférable et plus "swifty" de gérer un tel choix en passant un gestionnaire de complétion, et ainsi éviter de conserver une référence dans A
jusqu'à B
finit.
Que pensez-vous de cette seconde solution (passer une fermeture en tant que gestionnaire d'achèvement à B
)? Serait-il plus approprié que la première solution (contenant une référence dans A
)?
Dans un tel cas, comment dois-je implémenter cette solution? Est-ce que B
doit avoir une référence pour que la fermeture soit appelée comme gestionnaire d'achèvement?
EDIT: Quelques informations supplémentaires de mon scénario:
A
n'a pas exactement une propriétéB
, il le pousse dans un contrôleur de navigation.A
n'a pas toujours besoin de savoir surC
quandB
finitions, cela dépend de la tâche demandée àB
A
doit seulement savoir surC
une foisB
(en fonction de la tâche effectuée parB
, comme dit précédemment) a terminé pour mettre à jour certaines données.A
doit seulement savoir (en fonction de la tâche effectuée parB
, comme dit précédemment) une seuleC
à la fois
Merci. Je devrais peut-être donner plus de détails sur mon scénario, je vais éditer ma question. – AppsDev