2012-03-28 10 views
4

zu verwenden Ich weiß, dass Eigenschaften Getter und Setter-Methoden zu verkapseln. Wann immer wir also myObject.property1 sagen, rufen wir tatsächlich [myObject property1] auf. Aus Apple-Dokumentation, Stanford iOS-Kurse und Beispielcodes kann ich sehen, dass die Verwendung von Eigenschaften unterstützt wird. Ich bin überzeugt, dass die Verwendung von Eigenschaften einen Code besser und verständlicher erscheinen lässt, aber was ist mit der Leistung? Wenn ich eine große Anwendung schreibe, hat die Verwendung von Eigenschaften eine merkliche Auswirkung auf die Leistung? Mögen Profis im Allgemeinen direkte Setter- und Getter-Methoden oder -Eigenschaften?iOS - Ist es besser, Getter/Setter-Methoden direkt oder Eigenschaften

+0

Meine Frage ist klar: Gibt es einen Leistungsunterschied zwischen der Verwendung von Punktnotation (myObject.property1) und direktem Getter/Setter-Aufruf ([myObject property1])? Es hat nichts mit @synthesize zu tun. –

Antwort

3

Es gibt keinen Unterschied in der Leistung, wenn Sie die Klammernotation ([myObject property1]) oder die . Notation (myObject.property1) verwenden.

Dies ist eher eine Art der Programmierung als irgend etwas anderes, so verwenden Sie die Schreibweise Sie mit oder als Ihr Team die gleiche Schreibweise bequem sind, wenn Sie allein nicht funktionieren.

+0

Sie sagen, es gibt keinen Leistungsunterschied zwischen den beiden Stilen. Ich liebe Eigenschaften. Und mit der späteren XCode-Version ist es wirklich einfach, sie zu benutzen, da XCode die Hälfte des Code-Schreibens teilt. Aber es ist ein bisschen komisch, dass es keinen Unterschied macht, ich meine, dauert es nicht länger, weil es zuerst diese Eigenschaften in Getter/Setter-Methoden übersetzen muss? Oder nimmt diese Übersetzung bitte in der Kompilierzeit? Wenn es so ist, dann voila. –

+1

Sie kompilieren zu demselben Ding, also gibt es keinen Leistungsunterschied. – sch

2

Eigenschaften sind wahrscheinlich besser, weil sie automatisch die Methoden für Sie generieren und wenn Sie sie synthetisieren können Sie es wie folgt tun:

@synthesize property = _property 

Verwirrung zu vermeiden

Sie können auch verschiedene Funktionen wählen/Methoden wie:

  (nonatomic, retain) // or (readonly) etc. 

Es behandelt auch die Erinnerung besser

+0

aber wenn Sie VIELE VIELE Eigenschaften derselben Klasse haben, die Sie machen möchten, machen Sie auch Rückkehrmethoden ... – MCKapur

1

Eigenschaften sind definitiv bevorzugt. Es ist übrigens die @synthesize-Anweisung, die die Getter und Setter automatisch generiert. Es sind mir keine Berichte bekannt, die Leistungsänderungen mit Setter/Getter bestätigen würden.

+0

Falsch. Die Schlüsselfrage ist die Leistung. Alle anderen Bemerkungen sind peripher. Ich gehe auf die Frage ein. – Mundi

1

Die Eigenschaftensyntax wird direkt in Getter/Setter-Aufrufe übersetzt. Ich habe keine Ahnung, was dauert länger zu Kompilieren, oder wenn es einen Unterschied gibt, aber wenn das Programm ausgeführt wird, ist die Codeausführung die gleiche.