Creo que entiendo las propiedades en su mayor parte. Mi pregunta es, si tengo una propiedad para una variable de instancia, y estoy estableciendo o recuperando desde un método en mi archivo de implementación, ¿debo usar self.myProperty
o solo myProperty
? Sé que cualquiera de las dos funciona, pero he visto convenciones mixtas, a veces el código accede directamente a la variable y otras veces a través de la propiedad.¿Debo usar palabras clave propias (propiedades) en la implementación?
¿Hay alguna razón técnica para hacer esto? ¿Es solo convención/preferencia personal? Y no me refiero a las instancias donde el nombre del parámetro de un método colisiona con el nombre de la variable de instancia, que podría ser una de las razones para usar la propiedad (Al menos, en otros idiomas, no sé de este) Asumo que cuando se utiliza la propiedad dentro de la aplicación, que quieren tomar ventaja de la forma en la que manifestaron la propiedad (es decir, no atómica, retener), así que por ejemplo en un método, se puede hacer:
self.myProperty = [someObject someAutoReleasedObject];
en lugar de:
myProperty = [[someObject someAutoReleasedObject] retain];
Es esta la razón? Entonces, ¿hay solo ciertas situaciones en las que sería bueno usar la propiedad?
Soy nuevo en Objective-C, y esta es una de las pocas cosas que me tiene confundido. Hasta ahora acabo de acceder a la variable de instancia directamente, bajo la suposición falsa más probable de que al pasar por la propiedad en realidad se llama/envía un método/mensaje y se agrega una sobrecarga innecesaria. Estoy bastante seguro de que estoy equivocado con esto, pero incluso si la diferencia en la sobrecarga es insignificante (si es que hay alguna), ¿por qué elegir agregarla cuando uno simplemente puede acceder directamente a la variable?
Estoy bastante seguro de que estoy equivocado en mi forma de pensar, por lo que estoy preguntando aquí.
No tengo datos para validar esto, pero de acuerdo a la documentación de Apple:. "En los métodos que puede acceder directamente las variables de instancia de los casos de su clase Sin embargo, se recomiendan métodos de acceso en lugar de acceso directo, excepto en casos donde el rendimiento es primordial ". Consulte: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjCTutorial/10AppendixA/10AppendixA.html –
Ah bien, gracias. Sin embargo, eso hubiera sido mejor como respuesta. –
Olvidé agregar que si está realizando un desarrollo de Cocoa que usa KVO o enlaces, es más recomendable usar "self" en lugar de acceso directo porque Key-Value Observing y Cocoa Binding dependen de los métodos de acceso a los que se llama para sincronizar actualizaciones/cambios. –