einige Verwirrungen über [NSNull null], nil [duplicate]

8

1.

%Vor%

oder

2.

%Vor%

sollte ich die erste oder die zweite wählen?

oder wenn es so kommt:

3.

%Vor%

oder

4.

%Vor%

und was nochmal?

1.2.3.4. Was ist richtig und empfehlenswert?

    
Patrick 14.11.2011, 12:04
quelle

4 Antworten

18

Direkt von Apple-Dokumentation .
Die NSNull-Klasse definiert ein Singleton-Objekt, das Sie zur Darstellung von Nullwerten in Situationen verwenden, in denen nil als Wert verboten ist (normalerweise in einem Auflistungsobjekt wie einem Array oder einem Wörterbuch).

%Vor%

Es ist wichtig zu verstehen, dass die NSNull-Instanz semantisch verschieden von NO oder false ist - beide repräsentieren einen logischen Wert; Die NSNull-Instanz repräsentiert das Fehlen eines Werts. Die NSNull-Instanz ist semantisch äquivalent zu null, es ist jedoch auch wichtig zu verstehen, dass sie nicht gleich null ist. Um auf einen Null-Objektwert zu testen, müssen Sie daher einen direkten Objektvergleich durchführen.

%Vor%

Ist es jetzt klar?

    
Parag Bafna 14.11.2011, 13:14
quelle
3

Nach meinem Verständnis ist NSNull ein Objekt, das einen NULL-Wert darstellt, und nil ist nur ein leerer Zeiger.

Sie können ein NSArray mit NSNull-Objekten füllen und es werden Nullwerte zurückgegeben, aber Sie können es nicht mit Nils füllen.

Sie können

tun %Vor%

aber das würde abstürzen:

%Vor%

Gleichfalls:

%Vor%

Das erste Array würde beim Ausdruck "1" ausgeben Der zweite würde ausgeben: "1, null, 2"

Sie können also NSNull verwenden, um leere Bereiche in einem Array darzustellen.

Sie können nil nicht in ein Wörterbuch einfügen. Das bedeutet, dass der Schlüssel nicht existiert. Wenn Sie nach NSNull suchen, bedeutet dies, dass der Schlüssel existiert, aber einen leeren Wert (NSNull) enthält.

    
Odrakir 14.11.2011 12:28
quelle
1

Das erste bedeutet, dass es keinen solchen Schlüssel gibt, das zweite bedeutet, dass der Schlüsselwert NSNull

ist     
negersiu 14.11.2011 12:08
quelle
0

In diesem Fall sollten Sie den ersten verwenden; oder eher eine leichte Variante:

%Vor%

NSNull wird verwendet, wenn Sie ein gültiges Objekt benötigen, z. B. zur Verwendung als Wörterbuchschlüssel, Array-Eintrag oder ähnliches.

nil ist gleich (id)NULL ; Es wird allgemein als "Kein Wert" verstanden.

[NSNull null] hingegen ist ein Objekt, das einen leeren Wert enthält; bedeutet "Ein Wert von None".

Sehr wenige Methoden geben einen NSNull -Wert zurück und werden im Allgemeinen nur gefunden, wenn Sie sie selbst einführen.

Es existiert meistens, weil nil nicht in Arrays eingefügt werden kann; und funktioniert als leere Markierung für Arrays, die es benötigen.

Zu einer verwandten Anmerkung; Der Teil " != nil " Ihres Ausdrucks ist redundant. Jeder gültige Zeiger auf ein Objekt wird in einem booleschen Ausdruck als wahr ausgewertet, und nil wird als falsch ausgewertet.

    
Williham Totland 14.11.2011 12:08
quelle

Tags und Links