Comment dois-je déclarer un tableau de références faibles dans Swift?

J'aimerais stocker un tableau de références faibles en Swift. Le tableau lui-même ne devrait pas être une référence faible - ses éléments doivent être. Je pense que le Cacao NSPointerArray offre un non-typesafe version de ce.

  • Qu'en faire un objet de conteneur faiblement fait référence à un autre objet, puis de faire un tableau de ceux-là? (Si vous n'obtenez pas une meilleure réponse)
  • pourquoi n'utilisez-vous pas un NSPointerArray ?
  • C'est un vieux obj-c solution 🙂 Pour en faire Swifty, il doit être un objet générique! 🙂 Cependant, le vrai problème est de savoir comment obtenir les objets retirés du tableau lorsque l'objet référencé est libéré.
  • Bon, je préfère quelque chose avec un type paramétré. Je suppose que je pourrais faire un wrapper paramétrable autour de NSPointerArray, mais je voulais voir si il y avait des solutions de rechange.
  • Avez-vous essayé Array<weak AnyObject>?
  • Tout comme une autre option, NSHashTable existe. En gros, c'est un NSSet qui vous permet de spécifier la façon dont il doit faire référence aux objets qu'il contient.
  • oui, vous aurez à utiliser un accès indirect... comme si (nil) { retirer la poignée du tableau }
  • Ce doit être une langue bug que toutes les solutions proposées atteindre le résultat immédiat grâce à l'encapsulation et de briser la sémantique du type. Par exemple, un tableau de protocole de références perdre leur protocole d'identité, ce qui signifie qu'ils ne peuvent pas être exposés à Interface Builder via IBOutlet.

InformationsquelleAutor Bill | 2014-06-09