Il se peut que je manque quelque chose d'évident ici, mais j'implémente NSCopying sur l'un de mes objets. Cet objet possède des variables d'instance privées qui ne sont pas exposées via des getters, car elles ne doivent pas être utilisées en dehors de l'objet.Meilleure pratique pour copier des vars d'instances privées avec NSCopying
Dans mon implémentation de copyWithZone:
, j'ai besoin de alloc/init pour la nouvelle instance, mais aussi de configurer son état pour qu'il corresponde à l'instance actuelle. Je peux évidemment accéder à l'état privé actuel depuis l'intérieur copyWithZone:
, mais je ne peux pas le définir dans le nouvel objet, car il n'y a pas d'accesseurs pour cet état.
Existe-t-il un moyen standard de contourner ce problème tout en préservant la confidentialité des données?
Merci.
Merci pour la mention des accesseurs privés ainsi que les périls de NSCopyObject. –
Je ne suis pas sûr de savoir comment avoir des accesseurs en lecture seule aide la gestion de la mémoire? Si vous ne l'utilisez pas avec 'assign' ou' retain', cela ne fait aucune différence que vous utilisiez getter ou la variable directement. – Hemant
@Hemant, Parce que l'appelant ne devrait pas avoir besoin de faire attention à savoir si la propriété est actuellement (ou dans le futur) en lecture seule ou non. Ce n'est pas l'affaire de l'appelant, et cela pourrait changer au fil du temps, et alors vous auriez besoin de traquer chaque morceau de code qui l'a fait incorrectement. En respectant des règles simples, les erreurs deviennent évidentes. Quand vous dites "oh, sauf quand je sais que c'est actuellement correct" alors vous vous ouvrez pour des maux de tête d'entretien. –