Je surfe sur le merveilleux blog maintenu par Scott Stevenson, et j'essaie de comprendre un concept fondamental d'Objectif-C consistant à attribuer aux délégués la propriété «assigner» vs «retenir». Notez que les deux sont identiques dans un environnement garbage collection. Je suis principalement concerné par un environnement non basé sur GC (par exemple: iPhone).
Directement du blog de Scott:
"Le mot-clé assign générera un setter qui attribue directement la valeur à la variable d'instance, plutôt que de la copier ou de la conserver. C'est mieux pour les types primitifs comme NSInteger et CGFloat, ou les objets que vous ne possédez pas directement, tels que les délégués."
Qu'est-ce que cela signifie que vous ne possédez pas directement l'objet délégué? Je retiens généralement mes délégués, parce que si je ne veux pas qu'ils partent dans l'abîme, retenez s'en chargera pour moi. J'abstrait généralement UITableViewController de sa source de données respective et de son délégué également. Je conserve également cet objet particulier. Je veux m'assurer qu'il ne disparaît jamais afin que mon UITableView ait toujours son délégué.
Quelqu'un peut-il expliquer davantage où / pourquoi je me trompe, afin que je puisse comprendre ce paradigme courant dans la programmation Objective-C 2.0 d'utiliser la propriété assign sur les délégués au lieu de retenir?
Merci!