Quelle est la différence entre ceci:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
et ça:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Je souhaite utiliser la propriété pour les délégués.
Réponses:
La seule différence entre weaket assignest que si l'objet vers lequel weakpointe une propriété est désalloué, la valeur du weakpointeur sera définie sur nil, de sorte que vous ne couriez jamais le risque d'accéder à des déchets. Si vous utilisez assign, cela ne se produira pas, donc si l'objet est désalloué sous vous et que vous essayez d'y accéder, vous accéderez aux déchets.
Pour les objets Objective-C, si vous êtes dans un environnement où vous pouvez les utiliser weak, vous devez les utiliser.
UITableViewa assignpour son délégué:@property (nonatomic, assign) id <UITableViewDelegate> delegate;