Frage

Im folgenden Beispiel, an wie viele Nachrichten gesendet werden myObject?

- (void) myMethod:(id) myObject
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
    NSLog(@"%@", myObject.myStringProperty);
}

Ich bin nur neugierig, ob Objective-c möglicherweise den von zurückgegebenen Wert zwischenspeichert myStringProperty auf dem Stapel.Der von zurückgegebene Wert myStringProperty könnte sich zwischen aufeinanderfolgenden Nachrichten ändern, sodass das Caching möglicherweise keinen Sinn ergibt.

War es hilfreich?

Lösung

Drei

Ich bin nur neugierig, ob Objective-c möglicherweise den von myStringProperty zurückgegebenen Wert auf dem Stapel zwischenspeichert.Der von myStringProperty zurückgegebene Wert kann sich zwischen aufeinanderfolgenden Nachrichten ändern, sodass das Caching möglicherweise keinen Sinn ergibt.

Nein, es wird nicht zwischengespeichert.Jede Objektnachricht wird gesendet, vorausgesetzt natürlich myObject ist nicht nil.

Der Compiler hat keine Ahnung von Nebenwirkungen bei der Ausführung der Methode (1) oder Einfluss des globalen Zustands (2).

  1. z.B.Ändert sich myObject oder irgendetwas, auf das es verweist, jemals während der Ausführung von getting? myStringProperty?
  2. z.B.Wird das Ergebnis durch die aktuelle Zeit beeinflusst?

Andere Tipps

Sie können einen Haltepunkt auf -[myObject myStringProperty] setzen und sich selbst davon überzeugen.Wenn es sich bei myStringProperty um eine Getter-Methode handelt, die Sie selbst implementieren, klicken Sie einfach in den linken Balken neben der Methodenimplementierung, um den Haltepunkt festzulegen.

Wenn es sich um eine synthetisierte Zugriffsmethode handelt, geben Sie sie als symbolischen Haltepunkt im Haltepunkt-Navigator von Xcode ein.Klicken Sie im Navigatorbereich auf das Pfeilsymbol nach rechts, um den Haltepunktnavigator auszuwählen, drücken Sie + am unteren Rand des Fensters und wählen Sie „Symbolischen Haltepunkt hinzufügen…“.Geben Sie -[TheClassName myStringProperty] in das Symbolfeld ein und klicken Sie dann auf Fertig.

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