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 weak
et assign
est que si l'objet vers lequel weak
pointe une propriété est désalloué, la valeur du weak
pointeur 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.
UITableView
a assign
pour son délégué:@property (nonatomic, assign) id <UITableViewDelegate> delegate;