В чем разница между nil, NULL и [NSNULL nil]?

Я получил такую ​​ошибку - * Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: ** - [NSCFDictionary initWithObjects: forKeys: count:]: попытаться вставить нулевое значение в объекты [0] (ключ: s Earched) '

Затем я попробовал следующий код

    if (Obj == (id)[NSNull null])  //Obj is an id 
{
    NSLog(@" Obj is (id)[NSNull null]");    
}
else if (Obj == nil)
{
    NSLog(@"Obj is nil");   
} 
else if (Obj == NULL)
{
    NSLog(@"Obj is NULL");  
} 
else
{
    NSLog(@"Obj is something else");
}

searchedDict = [NSDictionary dictionaryWithObject:Obj forKey:@"searched"];

И получил сообщение NSLog как «Obj is nil».

Но когда я использовал тот же код выше, когда Obj был NSString и мое приложение было прекращено из-за значения nil, я получил сообщение NSLog как «Obj is (id) [NSNull null]».

В чем разница между nil, NULL и [NSNULL nil]?

Существуют ли разные типы значений NULL? если да, как обычно проверять эти нулевые значения ?

Спасибо: -)

8
задан S.Philip 25 July 2011 в 09:59
поделиться