Es gibt zwei Situationen:
Es ist möglich, dass ein Objekt ist [NSNull null]
oder es ist unmöglich.
Ihre Anwendung sollte normalerweise nicht verwendet werden. Verwenden [NSNull null];
Sie sie nur, wenn Sie ein " null " -Objekt in ein Array einfügen oder als Wörterbuchwert verwenden möchten . Und dann sollten Sie wissen, welche Arrays oder Wörterbücher Nullwerte enthalten können und welche nicht.
Wenn Sie der Meinung sind, dass ein Array niemals [NSNull null]
Werte enthält , suchen Sie nicht danach. Wenn es eine gibt [NSNull null]
, erhalten Sie möglicherweise eine Ausnahme, aber das ist in Ordnung: Objective-C-Ausnahmen weisen auf Programmierfehler hin. Und Sie haben einen Programmierfehler, der durch Ändern von Code behoben werden muss.
Wenn ein Objekt könnte sein [NSNull null]
, dann überprüfen Sie diese ganz einfach durch die Prüfung
(object == [NSNull null])
. Das Aufrufen isEqual
oder Überprüfen der Klasse des Objekts ist Unsinn. Es gibt nur ein [NSNull null]
Objekt, und der einfache alte C-Operator prüft es auf einfachste und effizienteste Weise.
Wenn Sie ein NSString
Objekt überprüfen , das nicht sein kann [NSNull null]
(weil Sie wissen, dass es nicht sein kann, [NSNull null]
oder weil Sie gerade überprüft haben, dass es sich von unterscheidet [NSNull null]
, müssen Sie sich fragen, wie Sie eine leere Zeichenfolge behandeln möchten, die eine mit der Länge 0 ist Wenn es sich um eine null
Zeichenfolge handelt nil
, gibt test (object.length == 0)
. object.length 0 if zurück object == nil
. Dieser Test deckt also keine Objekte und Zeichenfolgen mit der Länge 0 ab. Wenn Sie eine Zeichenfolge mit der Länge 0 behandeln, die sich von einer Nullzeichenfolge unterscheidet, überprüfen Sie einfach, ob object == nil
.
Wenn Sie einem Array oder einem Wörterbuch eine Zeichenfolge hinzufügen möchten und die Zeichenfolge möglicherweise Null ist, haben Sie die Wahl, sie nicht hinzuzufügen, durch zu ersetzen @""
oder durch zu ersetzen [NSNull null]
. Wenn Sie es durch ersetzen, @""
verlieren Sie die Fähigkeit, zwischen "no string" und "string of length 0" zu unterscheiden. [NSNull null]
Wenn Sie es durch ersetzen , müssen Sie Code schreiben, wenn Sie auf das Array oder Wörterbuch zugreifen, das nach [NSNull null]
Objekten sucht.