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 isEquallub 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 NSStringzaznaczysz 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 nulljak ł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.