NULL e zero são equivalentes?

Na verdade, minha pergunta aqui é: sãonull enil equivalente ou não?

Eu tenho um exemplo, mas estou confuso quando eles são iguais quando não são.

NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = [NSArray arrayWithObject:nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
id aValue = [arrayWithNull objectAtIndex:0];

if (aValue == nil) {
    NSLog(@"equals nil");
} else if (aValue == [NSNull null]) {
    NSLog(@"equals NSNull instance");
    if ([aValue isEqual:nil]) {
        NSLog(@"isEqual:nil");
    }
}

Aqui, no caso acima, mostra que ambosnull enil não são iguais e exibe "é igual a instância NSNull"

NSString *str=NULL;
id str1=nil;
if(str1 == str)
{
   printf("\n IS EQUAL........");

}
else
{
    printf("\n NOT EQUAL........");
}

E no segundo caso, mostra que ambos são iguais e exibe "É IGUAL".

A ajuda de qualquer pessoa será muito apreciada.

Obrigado, Monish.

questionAnswers(6)

yourAnswerToTheQuestion