Hat @synthesize etwas = _something;auch die Variable _something automatisch erstellen?

StackOverflow https://stackoverflow.com//questions/11712700

  •  13-12-2019
  •  | 
  •  

Frage

Ich verstehe, dass @synthesize die Getter und Setter für eine Instanzvariable automatisch erstellt.Wenn ich den Teil = _something spezifiziere, verstehe ich, dass dies den Compiler/die Laufzeit darüber informiert, dass er eine bestimmte Unterstützungsvariable für die Getter/Setter verwenden soll.

Erstellt Objective-C automatisch die Variable „_something“ zusammen mit meinen Gettern/Settern oder sollte ich diese Instanzvariable in meiner Schnittstellen-/Implementierungsdatei definieren?

War es hilfreich?

Lösung

Die Frage ist, ob @property in der Header-Datei und @synthesize in der Implementierung den zugrunde liegenden Ivar erstellen oder ob der Ivar in der Header-Datei aufgeführt werden muss.Beispiel in der Header-Datei:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;

und in der Umsetzung:

@synthesize someString = _someString;

Die Antwort ist, dass es davon abhängt, ob Sie die alte oder die moderne Laufzeit verwenden.Unter iOS verwenden Sie immer die moderne Laufzeitumgebung, sodass Sie diese nie benötigen NSString *_somestring Zeile, aber diese Frage bezieht sich auf Mac OS X.Wenn Sie für Mac OS X ein 64-Bit-Programm unter Mac OSDa einige Fehlinformationen veröffentlicht wurden, hier ein Hinweis: Objective-C-Laufzeitprogrammierhandbuch.

Andere Tipps

Es tut uns leid, dass Sie einen Teil Ihrer Frage falsch lesen.Wenn Sie den @synthesize-Teil mit dem Unterstrich tun, sind Sie alle gut.Keine Notwendigkeit, ein IVAR explizit zu definieren.

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