web-dev-qa-db-fra.com

Quelle est la différence entre «faible» et «attribuer» dans la déclaration de propriété du délégué

Quelle est la différence entre cela:

@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.

85
Firdous

La seule différence entre weak et assign est que si l'objet sur lequel une propriété weak pointe est désalloué, la valeur du pointeur weak sera définie à nil, afin de ne jamais courir le risque d'accéder aux ordures. 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 ordures.

Pour les objets Objective-C, si vous êtes dans un environnement où vous pouvez utiliser weak, vous devez l'utiliser.

151
yuji