Appeler une méthode une seule fois pour la durée de vie de l'object dans Swift

Disons que nous scrollViewDidScroll méthode scrollViewDidScroll et pour le premier défilement uniquement , nous voulons faire doSomething()

Une manière sortingviale est de mettre en œuvre ceci est d'avoir une variable booleanne au niveau de l'instance et basculer / vérifier.

 func scrollViewDidScroll(scrollView: UIScrollView!) { if(!scrolled) { scrolled = true; doSomething(); } } 

Je veux une meilleure solution qui n'introduise pas une variable booleanne scrolled . Quelque chose de similaire à dispatch_once mais pour la durée de vie de l'object plutôt que pour l'set du process.

Y a-t-il un nom pour ce model?

Quelque chose de similaire à dispatch_once mais pour la durée de vie de l'object plutôt que pour l'set du process

Malheureusement, dispatch_once n'est pas sûr au niveau de l'instance. Les gens qui utilisent cela en Objective-C ont tort de le faire. C'est pourquoi dispatch_once n'est pas disponible dans Swift.

Votre motif if !scrolled est en fait l'implémentation correcte (à l'exception de votre utilisation de parenthèses, de points-virgules et d'autres éléments non swifty). C'est ce qu'on appelle un drapeau .

Puisque vous voulez que cela soit fait une seule fois par instance de votre class, l'utilisation d'une variable d'instance est la bonne solution. Et, comme vous l'avez dit, c'est une manière sortingviale de le faire.

Si c'est correct et sortingvial, pourquoi pensez-vous qu'il existe un meilleur moyen?