j'essaie de résumer la majeure partie de mon activité async dans les opérations, et souvent je opérations de lancer d'autres opérations, etc ...Comment obtenir un référencement de façon fermetures rapides
Le problème que je suis face est que lorsque je fais référence à l'opération d'origine, elle peut être désaffectée avant que les opérations successives puissent se terminer. Les fermetures que j'utilise échouent si j'ai un weak self
, weak me = self
ou (désastreusement)unowned me = self
en place; mais si j'utilise self
sans eux, aucun op désaffecte (fuite de mémoire).
Est-il possible de conserver une référence en vie à l'intérieur d'une fermeture, sans créer une situation de référence circulaire bidirectionnelle?
Je comprends cela. Ma question concerne la partie «si non» de votre réponse. Que faire si j'essaie d'empêcher le soi d'être nul dans le futur sans l'allouer définitivement en mémoire? Parce que j'utilise des ops, ils vont se terminer et se terminer à moins que je crée un lien perm, mais je demande s'il existe un moyen d'éviter cela. –
Je veux que l'opération d'origine se répète jusqu'à ce que j'en aie fini, puis pouvoir la relâcher. –
@JamesLingo Dans ce cas, vous devrez garder «opération» en utilisant un fort moi. Il n'y a pas d'autre choix ici. La seule chose qui se passera est la vie de soi sera prolongée dans ce cas jusqu'à ce que le bloc se termine. Notez également que le bloc est finalement exécuté, peu importe si le 'Self 'est encore en vie ou a été désalloué entre-temps. – Rahul