Frage

Wie ich es verstehe, @synthesize tatsächlich erzeugt die Getter und Setter. Aber was @property dann tun? Ist es nur die Einstellung der Parameter für die kühle @synthesize magische Funktion?

War es hilfreich?

Lösung

Sie schreiben @property in Header-Datei

@property float value;

entspricht:

- (float)value; 
- (void)setValue:(float)newValue; 

Es erhält Informationen für andere Klassen, dass Ihre Klasse diese Methoden hat

@synthesize phisicaly diese Methoden in der Klasse Implementierung CREATE

Andere Tipps

@property erklärt den Namen als Eigenschaft. Dies bedeutet, es wird über die Punkt-Syntax (object.value) zugänglich sein.

@synthetize kann als Makro zu sehen ist, dass die Getter und Setter-Methoden erzeugt. Es ist nützlich zu wissen, dass Sie diese Methoden außer Kraft setzen können, auch wenn Sie die @synthetize an der richtigen Stelle ein.

@property erklärt Getter und / oder Setter

@synthesize setzt diese um.

Es ist ein verbreiteter Irrtum, dass die @synthesize Richtlinie erforderlich ist, um Getter und Setter mit der @property Richtlinie erstellt umzusetzen, aber dies ist nicht der Fall. Mit Hilfe der @property Richtlinie ohne @synthesize noch Setter / Getter generieren und erlauben Sie Punktnotation zu verwenden. Allerdings verursacht die @synthesize Richtlinie Weglassen des Compilers mit einem führenden Unterstrich entsprechenden Instanzvariablen zu erzeugen, z.B. die Eigenschaft meineVar wird eine Instanzvariable von _myVar haben.

einen führenden Unterstrich ist eine gemeinsame Konvention, die Sie zwischen den Eigenschaften und Instanzvariablen zu unterscheiden erlaubt. Es ist auch üblich, Eigenschaften und Instanzvariablen die gleichen Namen zu teilen, das ist, was @synthesize tut standardmäßig aktiviert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top