Hay dos situaciones:
Es posible que un objeto sea [NSNull null], o es imposible.
Por lo general, su aplicación no debería usarlo [NSNull null];, solo debe usarlo si desea colocar un objeto " nulo " en una matriz, o usarlo como un valor de diccionario. Y luego debe saber qué matrices o diccionarios pueden contener valores nulos y cuáles no.
Si cree que una matriz nunca contiene [NSNull null]valores, no la verifique. Si hay una [NSNull null], puede obtener una excepción, pero está bien: las excepciones de Objective-C indican errores de programación. Y tiene un error de programación que debe corregirse cambiando algún código.
Si un objeto puede ser [NSNull null], entonces verifica esto simplemente mediante pruebas
(object == [NSNull null]). Llamar isEqualo verificar la clase del objeto no tiene sentido. Solo hay un [NSNull null]objeto, y el antiguo operador de C lo comprueba bien de la manera más directa y eficiente.
Si marca un NSStringobjeto que no puede ser [NSNull null](porque sabe que no puede ser [NSNull null]o porque acaba de verificar que es diferente de [NSNull null], entonces debe preguntarse cómo desea tratar una cadena vacía, que es una con longitud 0. Si usted tratar es como una nullcadena nil, luego test (object.length == 0). object.length devolverá 0 si object == nil, por lo que esta prueba cubre objetos nulos y cadenas con longitud 0. Si trata una cadena de longitud 0 diferente de una cadena nula, simplemente verifique si object == nil.
Finalmente, si desea agregar una cadena a una matriz o un diccionario, y la cadena podría ser nula, tiene la opción de no agregarla, reemplazarla @""o reemplazarla por [NSNull null]. Reemplazarlo @""significa que pierde la capacidad de distinguir entre "sin cadena" y "cadena de longitud 0". Reemplazarlo [NSNull null]significa que debe escribir código cuando accede a la matriz o diccionario que busca [NSNull null]objetos.