Si je stocke un observateur comme celui-ci:
let observer: NSKeyValueObservation = foo.observe(\.value, options: [.new]) { (foo, change) in
print(change.newValue)
}
Comment puis-je supprimer/désactiver/nettoyer observer
une fois que je n'en ai plus besoin?
Mon instance foo
n'a pas de méthode semblable à remove
qui reçoit une instance NSKeyValueObservation
, la observer
elle-même n'a pas de remove
comme comme.
Dans iOS 11, vous n'êtes pas obligé. Laissez simplement l'observateur sortir du cadre. Il n'y a plus de pénalité pour laisser un observateur mourir avant l'observé ou pour laisser l'observé mourir avant l'observateur, vous n'avez donc aucun travail à faire.
D'un autre côté, si vous vraiment voulez pour désinscrire l'observateur, supprimez-le de tout ce qui le retient ou dites-le à invalidate
. (Quelque chose doit le retenir, car si vous ne persistez pas, l'observateur, il mourra et votre fonction d'observateur ne sera jamais appelée.)
(Vous dites "si je stocke un observateur comme celui-ci", mais la façon dont vous le stockez, avec let
, est une façon quelque peu idiote de stocker l'observateur. Il serait préférable de le mettre dans un ensemble à partir de que vous pouvez supprimer plus tard, ou au moins le stocker dans un var
facultatif que vous pouvez ensuite définir sur nil
.)