@property (assign) CGRect rect;
CGrect
es una estructura, no un NSObject
, por lo que no puede enviar mensaje a ella (como retain
).
Eres configuración completa, entonces será algo como:
// MyClass.h
@interface MyClass : NSObject
{
CGRect _rect;
}
@property (assign) CGRect rect;
y
// MyClass.m
@implementation MyClass
@synthesize rect=_rect;
@end
Así que, básicamente, a continuación, puede hacer algo como:
MyClass *myClass = [[MyClass alloc] init];
myClass.rect = CGRectMake(0,0,0,0);
La directiva sintetizan básicamente hace dos métodos (getter/setter) para usted "detrás de la escena"; algo así como ...
- (CGRect)rect;
- (void)setRect:(CGRect)value;
Normalmente agrego un "_" a mi instancia vars. El rect=_rect
le está diciendo al compilador que modifique la instancia _rect var siempre que se llame a la propiedad rect.
Lea a través de these tutorials on Theocaco. Él explica lo que el @synthesize (r) está haciendo detrás de las escenas.
Gracias. ¿Debo tener mi propia configuración para asignar campo por campo en el código? –
@David: si es CGRect, la asignación de campo por campo es equivalente a 'memcpy'. – kennytm
¿Cómo se configura el rect ... Me confunde – Morkrom