Estaba intentando crear una propiedad que sea de solo lectura. Quise inicializar con un valor de la clase que crea una instancia de esta clase, p.Inicializando una propiedad de solo lectura
@property (retain,readonly) NSString *firstName;
Y he intentado inicializar así:
-(id)initWithName:(NSString *)n{ self.firstName = n; }
Una vez que hice esto, el compilador informa de un error que la propiedad de sólo lectura no se puede asignar. Entonces, ¿cómo puedo hacer esto?
El problema con mi implementación anterior es que el valor no se conserva. Una vez que agregue el retener a la propiedad, esta asignación establecerá el valor en propiedad. Y si algún otro objeto accede a esta propiedad, este valor estará allí. También he modificado mi pregunta – awsome
¿Por qué sería esto un problema? Usar 'firstname = [n retener]' hará que firstName sea un puntero a 'n'. Así que sí, cuando algún otro objeto acceda a esta propiedad, el valor estará allí. :) – Rengers
Si trato de hacerlo de esta manera si tengo acceso a esta propiedad, recibo la siguiente excepción. Señal recibida del programa: "EXC_BAD_ACCESS". Y este error no se debe a ninguna otra propiedad. Investigué esto mucho en el depurador. Esta propiedad muestra "fuera del alcance". Y si lo asigno con,
self.firstName = n;
. entonces todo funciona bien – awsome