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).
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?
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.
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.
Tags und Links objective-c iphone cocoa