Ziel c:iVars @public machen oder @properties für sie @synthetisieren?Wann sollte ich Eigenschaften verwenden?

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

  •  13-11-2019
  •  | 
  •  

Frage

Ich habe einige Instanzvariablen in meiner Klasse, auf die ich überall zugreifen möchte.Etwa so:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

Ich kann über die Instanz von der Instanz aus auf die Eigenschaft zugreifen -> Syntax wie unten, wie ich es in C++ tun würde:

someObjectInstance->someString

Soll ich eine Immobilie erstellen? someString wenn ich nur möchte, dass es für die Außenwelt zugänglich ist?Ich würde eine erstellen @property für someString in meiner Schnittstelle und @synthesize es in meiner Implementierung, was mir den Zugriff darauf über die Punktsyntax ermöglichen würde.

War es hilfreich?

Lösung

Wenn Sie Daten offenlegen möchten, sollten Sie im Allgemeinen Eigenschaften verwenden.Instanzvariablen öffentlich zu machen ist im Allgemeinen eine schlechte Idee.

Andere Tipps

Dies ist die objektorientiertere Vorgehensweise, denn wenn Sie eine Eigenschaft verwenden, können Sie den Getter/Setter später ändern (anstatt ihn synthetisieren zu lassen), wenn Sie möchten, dass er etwas anderes tut.

Ja, denn was du tust, wenn du es zu einem machst @property weist Leute an, die es verwenden, um anzurufen setSomeString Und someString Methoden, in der Tat.Selbst wenn du es bist @synthesizeWenn Sie sie verwenden, ist es für Ihre Codequalität besser, die Methoden zu verwenden, weil Sie könnte Ändern Sie sie bei Bedarf.Wenn Sie nur die Zeigerreferenz verwenden und feststellen, dass Sie Zugriffe abfangen müssen, ist dies nicht möglich.

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