Istnieją dwie sytuacje:
Możliwe, że obiekt jest [NSNull null]
lub jest to niemożliwe.
Twoja aplikacja zwykle nie powinna z [NSNull null];
ciebie korzystać , używaj jej tylko, jeśli chcesz umieścić w tablicy obiekt „ zerowy ” lub użyć go jako wartości słownikowej. A potem powinieneś wiedzieć, które tablice lub słowniki mogą zawierać wartości zerowe, a które nie.
Jeśli uważasz, że tablica nigdy nie zawiera [NSNull null]
wartości, nie sprawdzaj jej. Jeśli istnieje [NSNull null]
, możesz otrzymać wyjątek, ale to jest w porządku: wyjątki Objective-C wskazują na błędy programowania. I masz błąd programowania, który wymaga naprawy poprzez zmianę kodu.
Jeśli obiekt może być [NSNull null]
, to sprawdzasz to po prostu przez testowanie
(object == [NSNull null])
. Wywołanie isEqual
lub sprawdzenie klasy obiektu to nonsens. Jest tylko jeden [NSNull null]
obiekt, a zwykły stary operator C sprawdza go w jak najprostszy i najbardziej wydajny sposób.
Jeśli NSString
zaznaczysz obiekt, który nie może być [NSNull null]
(ponieważ wiesz, że nie może być [NSNull null]
lub ponieważ właśnie sprawdziłeś, że jest inny niż) [NSNull null]
, musisz zadać sobie pytanie, jak traktować pusty ciąg znaków, czyli taki o długości 0. traktuj to null
jak łańcuch nil
, a następnie przetestuj (object.length == 0)
. object.length zwróci 0 jeśli object == nil
, więc ten test obejmuje zero obiektów i łańcuchów o długości 0. Jeśli traktujesz łańcuch o długości 0 różnej od zera, po prostu sprawdź, czy object == nil
.
Wreszcie, jeśli chcesz dodać ciąg do tablicy lub słownika, a ciąg może być zerowy, możesz nie dodawać go, zamieniać go na @""
lub zamieniać na [NSNull null]
. Zastąpienie go @""
oznacza utratę możliwości odróżnienia „bez ciągu” od „ciągu o długości 0”. Zastąpienie go [NSNull null]
oznacza, że musisz pisać kod podczas uzyskiwania dostępu do tablicy lub słownika, który sprawdza [NSNull null]
obiekty.