Null ist ein leerer Wert, der an ein Objekt gebunden ist/entspricht (der ID-Typ in Objective-C). null habe keine Referenz/Adresse, nur ein leerer Wert.
NSString *str = nil;
So sollte nil verwendet werden, wenn es sich um ein Objekt handelt.
if(str==nil)
NSLog("str is empty");
Jetzt NULL für nicht-Objektzeiger (wie ein C-Zeiger) in Objective-C verwendet. Wie null, NULL bekam keinen Wert noch Adresse.
char *myChar = NULL;
struct MyStruct *dStruct = NULL;
Also, wenn es eine Situation ist, wenn ich brauche, um meine struct (Strukturtyp Variable) überprüfen leer ist oder nicht, dann wird, verwende ich:
if (dStruct == NULL)
NSLog("The struct is empty");
Nehmen wir ein anderes Beispiel haben, die
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Of Schlüssel-Wert-Beobachtung sollte der Rahmen ein C-Zeiger oder ein Objektverweis sein. Hier für den Kontext können wir nicht verwenden nil; wir müssen NULL verwenden. Die Klasse NSNull definiert ein Singleton-Objekt, das zur Darstellung von Nullwerten in Sammlungsobjekten (NSArray, NSDictionary) verwendet wird. Die [NSNull null] wird die Singleton-Instanz von NSNull zurückgeben. Grundsätzlich [NSNull null] ist ein richtiges Objekt.
Es gibt keine Möglichkeit, ein Nil-Objekt in ein Sammlungsobjekt einzufügen. Nehmen wir ein Beispiel haben:
NSMutableArray *check = [[NSMutableArray alloc] init];
[check addObject:[NSNull null]];
[check addObject:nil];
In der zweiten Zeile, werden wir keine Fehler bekommen, weil es vollkommen fair ist ein NSNull Objekt in eine Sammeltyp-Objekt einfügen. In der dritten Zeile erhalten wir den Fehler "Objekt kann nicht Null sein". Weil nil kein Objekt ist.
Seine zu Objective-C Frage bezogen. – Biranchi
'nil' bedeutet eine Art' NULL' für objc-Instanz. Sie können also festlegen, dass ein bestimmter Wert für eine Objc-Instanz oder einen generischen Zeiger bestimmt ist. Im Hinblick auf Typ-Management und Sicherheit wird Ihnen das sehr helfen. – Eonil
'nil' und' null'/'NULL' sind gleich - beide sind als null definiert. Als Formalität verwenden Sie 'nil' beim Codieren von Objective-C und' NULL' beim Codieren von regulären C/C++ - Anweisungen/-Aufrufen. 'NSNull' ist jedoch etwas völlig anderes. Es ist ein Singleton-Objekt, das als Platzhalter dient, um "nichts" zu repräsentieren, zB in NSDictionarys, wo keine NULL/NULL-Zeiger erlaubt sind. –