Une propriété NSSsortingng sous ARC doit-elle être forte ou copier?

Lorsque vous ne comstackz pas avec ARC, il est recommandé d’utiliser des propriétés de copy pour des types de données tels que NSSsortingng . Je n’ai pas trouvé de documentation appropriée sur l’utilisation de la copy en mode ARC. Quelqu’un peut-il me dire ce qui est applicable pour ARC?

Il est toujours recommandé de copier car vous voulez éviter que quelque chose ne passe une chaîne mutable et ensuite le changer sans que vous le sachiez. Une copie garantit que la chaîne que vous avez ne changera pas.

Copier et ARC sont orthogonaux: vous faites des copies d’objects mutables pour “geler” leur état; L’ARC garde la trace du compte de référence de l’object.

NSSsortingng objects NSSsortingng peuvent être ou ne pas être mutables. Lorsque vous recevez un NSSsortingng* tant que paramètre, vous ne pouvez pas être certain qu’il soit immuable, à moins que vous ne vérifiiez son type (et même dans ce cas, vous obtiendrez des faux positifs). Si votre algorithme repose sur le fait que la chaîne ne change pas après avoir été définie, faire une copie est la bonne chose à faire. ARC, d’autre part, veillera à ce que l’object ne soit pas libéré pendant que vous y tenez une référence forte.

Peu importe si vous utilisez ARC ou non-ARC .

Le raisonnement derrière la copy est que vous pouvez garantir que l’état interne de votre classe ne peut pas être modifié en dehors de l’implémentation.

Cela pourrait se produire si quelqu’un vous passait une NSMutableSsortingng , puis le modifiait plus tard. Cette considération est indépendante de l’environnement de gestion de la mémoire.