Nil ist für Objektzeiger
NULL ist für Nicht-Zeiger
[NSNULL null] ist ein Objekt, das "nil" darstellt, um in Fällen verwendet zu werden, in denen keine Werte zulässig sind (wie von Vince, wie in Sammlungen, z. B. NSArray und NSDictionary, hervorgehoben)
%code% ist der ursprüngliche C-artige Wert, der einem Zeiger zugewiesen wird, von dem angenommen wird, dass er auf keine explizite Adresse zeigt. Es wird im Allgemeinen nur verwendet, um "Unset" oder als Sentinel-Wert zu verstehen.
%Vor%%code% ist die Objective-C-Version des gleichen Objekts, das auf Obj-C-Objektreferenzen angewendet wird:
%Vor%Sie sind beide so definiert, dass sie gleich dem Wert Null sind, und obwohl sie austauschbar verwenden könnte, wird ersteres hauptsächlich in Obj-C für traditionelle Zeiger verwendet (wie das Setzen von %code% Kontextzeigern) bis NULL) und %code% wird für alle Obj-C Objektreferenzen verwendet.
Der Unterschied besteht darin, dass, obwohl die Obj-C-Syntax auf Cs liegt, das Design der Sprache höher ist und die Objekt-IDs sind nicht konzeptionell gleich wie nur" Zeiger ". Daher die Schaffung eines besonderen Wächters für sie.
%code% ist ein Objekt beabsichtigt , in sehr bestimmten Fällen verwendet zu werden (z. B. Einfügen in Sammlungen), wenn ein "nicht wert" -Wert gewünscht ist, aber das tatsächliche %code% nicht erlaubt ist und ein Objekt verwendet werden muss.
Beachten Sie, dass %code% und %code% sehr ähnlich stringify: %code% stringiert als %code% und %code% als %code% .
%code% ist ein Wrapper für den %code% -Wert, den Sie in die Sammlung einfügen möchten, wenn Sie möchten.
NSNull Klassenreferenz.
Sie können auch vorher prüfen, ob eine Objektreferenz %code% einfach mit %code% ist.
Auch %code% ist definiert als: %code% und ist Objective C äquivalent für C %code% .
Ich habe einen Fehler wie folgt erhalten - * Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: ** - [NSCFDictionary initWithObjects: forKeys: count:]: Versuch, nil-Wert an Objekten einzufügen [0] ( Schlüssel: gesucht) '
Dann habe ich den folgenden Code ausprobiert
%Vor%Und ich habe die NSLog-Nachricht als "Obj is nil".
Aber wenn ich denselben obigen Code benutzte, als Obj NSString war und meine App wegen Nil-Wert beendet wurde, bekam ich die NSLog-Nachricht als 'Obj is (id) [NSNull null]'.
Was sind die Unterschiede zwischen nil, NULL und [NSNULL nil]?
Gibt es verschiedene Arten von Nullwerten? Wenn ja, wie wird häufig nach diesen Nullwerten gesucht ?
Danke: -)