Pregunta

Me han visto este código en la mayor parte del tiempo. Aquí hay dos nombres de variables definidas como en la aplicación que mediante la asignación de sintetizar. ¿Cuál es el propósito de hacer algo como esto? Como el mantenimiento de 2 nombres de las variables independientes. Es este tipo de una convención?

Test.h

@interface Test {
  id<something> _variable1;
}

@property (nonatomic, retain)  id<something> variable2;

Test.m

@synthesize variable2 = _variable1
¿Fue útil?

Solución

Hay una sola variable. La cosa nombrada variable2 es en realidad una propiedad, que es básicamente un atajo sintáctico para un get / set par método. Cuando se define una propiedad, puede escribir el get / métodos establecidos de forma explícita ...

- (void)setVariable2:(id<something>)value {
    if (_variable1 != value) {
        [_variable1 release];
        _variable1 = [value retain];
    }
}

- (id<something>)variable2 {
    return _variable1;
}

... o utilizar el constructo @synthesize para generar los métodos anteriores de forma automática, evitando así tener que escribir mucho monótona. (También emite código para liberar _variable1 en la destrucción del objeto, que no he incluido aquí.)

A veces, sin embargo, es posible que desee aplicar uno u otro de estos métodos de manera diferente a los valores predeterminados. En este caso, podría escribir el suyo propio. Incluso se puede mezclar @synthesize y una versión personalizada de uno solo de los métodos.

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