Ziel c:iVars @public machen oder @properties für sie @synthetisieren?Wann sollte ich Eigenschaften verwenden?
-
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.
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 @synthesize
Wenn 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.