J'essayais de créer une propriété en lecture seule. Je voulais initialiser avec une valeur de la classe créant une instance de cette classe, par ex.Initialisation d'une propriété readonly
@property (retain,readonly) NSString *firstName;
Et j'ai essayé de l'initialiser comme ceci:
-(id)initWithName:(NSString *)n{ self.firstName = n; }
Une fois que je l'ai fait, le compilateur a signalé une erreur qui ne peut être attribué la propriété en lecture seule. Alors, comment puis-je faire cela?
Le problème avec mon implémentation ci-dessus est que la valeur n'est pas conservée. Une fois que j'ajoute le retain à la propriété, cette affectation va-t-elle définir la valeur dans la propriété. Et si un autre objet accède à cette propriété, cette valeur sera là. J'ai aussi modifié ma question. – awsome
Pourquoi est-ce que ce serait un problème? Utiliser 'firstname = [n retain]' ne fera que rendre un firstName à 'n'. Alors oui, quand un autre objet accède à cette propriété, la valeur sera là. :) – Rengers
Si j'essaie de le faire de cette façon si j'accède à cette propriété, je reçois l'exception suivante. Signal reçu du programme: "EXC_BAD_ACCESS". Et cette erreur n'est due à aucune autre propriété. J'ai beaucoup étudié cela dans le débogueur. Cette propriété indique "hors de portée". Et si je l'assigne avec,
self.firstName = n;
. alors tout fonctionne bien. – awsome