Existem duas situações:
É possível que um objeto seja [NSNull null], ou é impossível.
Geralmente, seu aplicativo não deve ser usado [NSNull null];, se você quiser colocar um objeto " nulo " em uma matriz ou usá-lo como um valor de dicionário. E então você deve saber quais matrizes ou dicionários podem conter valores nulos e quais podem não.
Se você acha que uma matriz nunca contém [NSNull null]valores, não verifique. Se houver [NSNull null], você pode obter uma exceção, mas isso é bom: as exceções de Objective-C indicam erros de programação. E você tem um erro de programação que precisa ser corrigido alterando algum código.
Se um objeto puder ser [NSNull null], você verifica isso simplesmente testando
(object == [NSNull null]). Ligar isEqualou verificar a classe do objeto é um absurdo. Existe apenas um [NSNull null]objeto, e o operador C simples e antigo o verifica da maneira mais direta e eficiente.
Se você verificar um NSStringobjeto que não pode ser [NSNull null](porque você sabe que não pode ser [NSNull null]ou porque acabou de verificar se é diferente de [NSNull null], então você precisa se perguntar como deseja tratar uma sequência vazia, ou seja, com comprimento 0. Se você tratá-lo como uma nullstring nil, em seguida, (object.length == 0)test.objeto.length retornará 0 se object == nil, portanto, este teste cobre objetos e cadeias nulos com comprimento 0. Se você tratar uma cadeia de comprimento 0 diferente de uma cadeia nula, verifique se object == nil.
Por fim, se você deseja adicionar uma string a uma matriz ou dicionário, e a string pode ser nula, você pode optar por não adicioná-la, substituí-la por @""ou substituí-la por [NSNull null]. Substituí-lo por @""significa que você perde a capacidade de distinguir entre "sem cadeia" e "cadeia de comprimento 0". Substituí-lo [NSNull null]significa que você precisa escrever um código ao acessar a matriz ou o dicionário que verifica se há [NSNull null]objetos.