ist, dass in einem Kontext haben Lassen:
Es gibt verschiedene Möglichkeiten, auf ein Objekt zuzugreifen, die von einem Schlüssel zugänglich ist.
A. Schlüsselwert Coding
Key-Wert Codierung mit -valueForKey:
et al getan. Da dies in NSObject
implementiert ist, antworten fast alle Objekte mit Eigenschaften (Eigenschaften, auf die der Schlüssel zugreifen kann). Im Grunde bildet diese Methode einen Selektor aus dem Schlüssel und sendet ihn an das Objekt. Außerdem haben Sie die Möglichkeit, einen Schlüsselpfad zu erstellen, und es gibt einige spezielle Schlüssel, d. e. Anzahl.
Dies ist vollständig außerhalb des Compilers implementiert.
Instanzen von NSDictionary
unterstützt dies.
B. Subskribierung
[]
ist die Syntax für Subskribierung. Wenn der Schlüssel zwischen [
und ]
ein Objekt ist, handelt es sich um eine Schlüssel-Subskription. Der Compiler wandelt diese Syntax in eine -objectForKeyedSubscript:
et al. Um. Botschaft. Der Empfänger muss die Methoden implementieren.
Instanzen von NSDictionary
unterstützt dies durch einfaches Senden -objectForKey:
et al. zu self
. Aber es gibt einen kleinen Unterschied, siehe unten.
C. NSDictionary
Zusätzlich NSDictionary
implementiert -objectForKey:
.
Es gibt kein richtig oder falsch. Persönlich würde ich die spezifischste Nachricht für Instanzen von NSDictionary
, -objectForKey:
et al bevorzugen. Schlüssellaufwerk ist jedoch möglicherweise besser lesbar.
Schlüssel-Wert-Codierung ist gut, wenn Sie den Typ des Empfängers nicht kennen.
BTW: Key-Wert-Codierung und Keyed-Subscripting lassen Sie Null-Werte in einer Instanz von NSMutableDictionary
, während -setObject:forKey:
et al. verbietet das.
[Zugriff auf Schlüssel in NSDictionary mit Schlüssel-Notation] (http://stackoverflow.com/q/14878468) –