nilist der Literal-Nullwert für Objective-C-Objekte, der dem abstrakten Typ idoder einem über deklarierten Objective-C-Typ entspricht @interface. Zum Beispiel:
NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;
if (anotherObject == nil)
Nilist der Literal-Nullwert für Objective-C-Klassen, der dem Typ entspricht Class. Da der meiste Code keine Variablen zum Referenzieren von Klassen benötigt, ist seine Verwendung nicht üblich. Ein Beispiel ist:
Class someClass = Nil;
Class anotherClass = [NSString class];
NULList der Literal-Nullwert für beliebige C-Zeiger. Zum Beispiel,
int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;
NSNullist eine Klasse für Objekte, die null darstellen. Tatsächlich gibt es nur ein Objekt, nämlich das von +[NSNull null]. Es unterscheidet sich von nilda nilist eine wörtliche Null - Wert, dh es ist kein Objekt. Die einzelne Instanz von NSNullist andererseits ein geeignetes Objekt.
NSNullwird häufig in Foundation-Sammlungen verwendet, da sie keine nilWerte speichern können. Im Falle von Wörterbüchern, -objectForKey:kehrt nilum anzuzeigen , dass eine bestimmte Taste kein Objekt im Wörterbuch , das entspricht, das heißt, hat sich der Schlüssel nicht in das Wörterbuch aufgenommen. Wenn Sie deutlich machen möchten, dass Sie einen bestimmten Schlüssel haben, dieser aber noch keinen Wert hat, können Sie ihn verwenden [NSNull null].
Im Folgenden wird beispielsweise eine Ausnahme ausgelöst, da Wörterbücher keine nilWerte speichern können:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];
Andererseits ist der folgende Code gültig, da er [NSNull null]kein nilObjekt ist:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
Es ist erwähnenswert, dass Foundation-Sammlungen Initialisierer haben, die nilals Markierung für das Ende einer Liste von Objekten dienen, ohne die Anzahl der Elemente in der Liste angeben zu müssen. Dies kann nur passieren, weil niles nicht in einer Foundation-Sammlung gespeichert werden kann. Zum Beispiel,
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
Was NILoder NSNilgibt es keine solche Dinge in Objective-C oder Apple - Stiftung.