@property (assign) CGRect rect;
CGrect
ist eine Struktur, kein NSObject
, so kann man nicht Nachricht an sie (wie retain
) senden.
Sie sind voll Setup dann etwas sein wie:
// MyClass.h
@interface MyClass : NSObject
{
CGRect _rect;
}
@property (assign) CGRect rect;
und
// MyClass.m
@implementation MyClass
@synthesize rect=_rect;
@end
Also im Grunde kann man dann wie etwas tun:
MyClass *myClass = [[MyClass alloc] init];
myClass.rect = CGRectMake(0,0,0,0);
Die synthesize Richtlinie grundsätzlich macht zwei Methoden (Getter/Setter) für Sie "hinter den Kulissen"; etwas wie ...
- (CGRect)rect;
- (void)setRect:(CGRect)value;
Ich füge normalerweise ein "_" zu meiner Instanz vars hinzu. Die rect=_rect
weist den Compiler an, die _rect-Instanzvariable zu ändern, wenn die rect-Eigenschaft "aufgerufen" wird.
Lesen Sie these tutorials on Theocaco. Er erklärt, was das @synthesize (r) hinter den Kulissen macht.
Danke. Muss ich meine eigene Einstellung haben, um Feld für Feld im Code zuzuordnen? –
@David: Wenn es sich um CGRect handelt, entspricht die Zuweisung von Feld zu Feld "memcpy". – kennytm
Wie setzt man das Rect ... Es verwirrt mich – Morkrom