@property (assign) CGRect rect;
CGrect
est un struct, pas un NSObject
, de sorte que vous ne pouvez pas envoyer un message à lui (comme retain
).
Vous êtes installation complète sera alors quelque chose comme:
// MyClass.h
@interface MyClass : NSObject
{
CGRect _rect;
}
@property (assign) CGRect rect;
et
// MyClass.m
@implementation MyClass
@synthesize rect=_rect;
@end
Vous pouvez en principe faire quelque chose comme:
MyClass *myClass = [[MyClass alloc] init];
myClass.rect = CGRectMake(0,0,0,0);
La directive synthétisent essentiellement fait deux méthodes (getter/setter) pour vous "dans les coulisses"; quelque chose comme ...
- (CGRect)rect;
- (void)setRect:(CGRect)value;
J'ai l'habitude d'ajouter un "_" à mes vars instance. Le rect=_rect
indique au compilateur de modifier l'instance _rect var chaque fois que la propriété rect est appelée.
Avoir une lecture de these tutorials on Theocaco. Il explique ce que fait @synthesize (r) dans les coulisses.
Merci. Ai-je besoin d'avoir mon propre réglage pour attribuer champ par champ dans le code? –
@David: S'il s'agit de CGRect, l'affectation de champ par champ est équivalente à 'memcpy'. – kennytm
Comment définissez-vous le rect ... Sa confusion me – Morkrom