Pregunta

Entiendo que @synthesize crea automáticamente los captadores y definidores de una variable de instancia.Cuando especifico la parte = _something, entiendo que esto informa al compilador/tiempo de ejecución que quiero que use una variable de respaldo particular para los captadores/definidores.

¿Objetive-C crea automáticamente la variable _something junto con mis captadores/definidores o debería definir esa variable de instancia en mi archivo de interfaz/implementación?

¿Fue útil?

Solución

La pregunta es si @property en el archivo de encabezado y @synthesize en la implementación crean el ivar subyacente o si el ivar debe aparecer en el archivo de encabezado.Ejemplo, en el archivo de encabezado:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;

y en la implementación:

@synthesize someString = _someString;

La respuesta es que depende de si está utilizando o no el tiempo de ejecución heredado o moderno.En iOS siempre estás usando el tiempo de ejecución moderno, por lo que nunca necesitas el NSString *_somestring línea, pero esta pregunta es sobre Mac OS X.Para Mac OS X, si está utilizando un programa de 64 bits en Mac OS X 10.5 o posterior, está utilizando el tiempo de ejecución moderno; de lo contrario, está utilizando el tiempo de ejecución heredado y necesita la línea adicional en su archivo de encabezado.Dado que se ha publicado información errónea, aquí hay una referencia: Guía de programación en tiempo de ejecución de Objective-C.

Otros consejos

Lo siento, mal la leído por parte de su pregunta.Si haces la parte de @Syntsize con el subrayado, eres todo bien.No hay necesidad define explícitamente un IVAR.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top