Quiero activar algún código cuando se accede y cambia una propiedad. Yo uso @property
y @synthesize
en mi código para mis ivars. Las propiedades se conservan, por lo que me gustaría mantener ese material de gestión de memoria generado automáticamente por @synthesize
.¿Cómo proporcionar una implementación personalizada adicional de métodos de acceso cuando se usa @synthesize?
Sin embargo, supongo que @synthesize
le dice al compilador que genere el código de los métodos de acceso justo donde @synthesize is
, por lo que la mayoría de los casos en la parte superior del código, ¿verdad?
Y cuando tengo una propiedad foo
, obtengo los métodos -setFoo
y -foo
. ¿Podría entonces hacer un método como este para ejecutar un código más personalizado cuando se cambia una propiedad?
-(void)setFoo {
// custom stuff
}
Eso es un problema. ¿Cómo ejecutar el primero? No me gustaría tener un nombre diferente aquí. ¿Existe alguna manera de permitir que la directiva @synthesize
cree otros nombres para los métodos getter y setter, que luego llamo fácilmente? ¿Y aún así podría usar la sintaxis de puntos para acceder a ellos?
FYI, su setter de ejemplo tiene un error, porque llamarlo dos veces con el mismo objeto puede causar que dicho objeto se desasigne antes de retenerlo. No es realmente un gran problema, pero ilustra cuán difícil puede ser para que todo salga bien. –
No estoy seguro de seguir, ¿podría explicar cómo debe escribirse en su lugar (no es que no le creo, me gustaría saber cómo hacerlo correctamente). Gracias :) – jbrennan
Oh, nvm Veo el problema, lo actualizaré para reflejar los cambios. – jbrennan