Je navigue sur le merveilleux blog de Scott Stevenson, et j'essaie de comprendre un concept Objective-C fondamental de l'assignation des délégués : la propriété 'assign' par rapport à 'retain'. Notez que les deux sont les mêmes dans un environnement de garbage collected. Je suis surtout préoccupé par un environnement non basé sur le garbage collector (ex : iPhone).
Directement du blog de Scott :
"Le mot-clé assign générera un setter qui affecte la valeur à la variable d'instance directement, plutôt que de la copier ou de la conserver. C'est la meilleure solution pour les types primitifs comme NSInteger et CGFloat, ou les objets que vous ne possédez pas directement, comme les délégués."
Qu'est-ce que cela signifie que vous ne possédez pas directement l'objet délégué ? Je conserve généralement mes délégués, car si je ne veux pas qu'ils disparaissent dans l'abîme, la conservation s'en chargera pour moi. J'abstrais généralement UITableViewController de sa source de données et de son délégué respectifs. Je retiens également cet objet particulier. Je veux m'assurer qu'il ne disparaîtra jamais et que mon UITableView aura toujours son délégué à portée de main.
Quelqu'un peut-il m'expliquer où et pourquoi je me trompe, afin que je puisse comprendre ce paradigme commun à la programmation Objective-C 2.0 qui consiste à utiliser la propriété assign sur les délégués au lieu de retain ?
Merci !