texto subrayado negrita negrilla cursiva como colocar objective-c cocoa-touch ios properties

objective c - negrita - Propiedad sintetizada y variable con prefijo de subrayado: ¿qué significa esto?



subrayado html css (3)

Posible duplicado:
¿Subrayar el prefijo en el nombre de la propiedad?

¿Qué significa esto? @synthesize window=_window; Sé que, en general, significa que ''alguna clase'' tiene una ventana, pero ¿por qué usar _window lugar de window ? ¿Esto es un espacio de nombres?


Esto es algo muy común en la programación / objetivo-C de iOS, tiene que ver con ivars. Para más información, puede leer aquí:

¿Por qué renombrar propiedades sintetizadas en iOS con guiones bajos destacados?

¿Cómo funciona un guión bajo al frente de una variable en una clase de cacao objetivo-c?

Basado en mi experiencia al tener este hábito en mi código, me ayuda a escribir accidentalmente la ventana cuando me refiero a self.window y viceversa (no tiene que ser una ventana, sino cualquier otra variable)


La respuesta breve es: el subrayado es solo una convención útil para enfatizar el hecho de que las variables de clase son "privadas" para una clase y debe acceder a ellas a través de sus propiedades.

puedes declarar tu variable de window sin el subrayado inicial; en este caso, la declaración @synthetize sería simplemente: @synthetize window , y sería prácticamente lo mismo.

para la respuesta larga, los enlaces publicados por aherlambang son realmente interesantes, lee ...


Voy a intentar describir esta convención de programación en inglés básico.

Es una convención muy común en otros lenguajes nombrar las variables miembro con un m , m_ o _ para distinguirlas de las variables declaradas localmente y para indicar que deben tener los classInstance.m_Variable = 5 acceso escritos, si es necesario (no classInstance.m_Variable = 5 ).

Si un programador de Objective-C declara ivars siguiendo esta convención (y deberían) y usa la sintaxis básica @synthesize _window; entonces el uso de la propiedad se vuelve algo feo: classInstance._window = myWindow o [classInstance set_window:myWindow] . Usando la sintaxis @synthesize window=_window; permite al programador Obj-C utilizar un estándar de programación popular (precediendo a ivars con _ ) mientras simultáneamente tiene acceso a propiedades que usan la classInstance.window = myWindow estándar de classInstance.window = myWindow y [classInstance setWindow:myWindow] .