Мы все согласны с тем, что [NSNull null] полезен в качестве заполнителя, где требуется объект, как описано выше. Но если он явно не используется в присваивании для вашего объекта, его не следует использовать для сравнения, ошибку, которую я допустил в прошлом.
id a;
NSLog(@"Case 1");
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
NSLog(@"Case 2");
a = [NSNull null];
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
Выход:
2014-01-31 10: 57: 11.179 MCDocsApp [13266: a0b] Дело 1
2014-01-31 10: 57: 11.179 MCDocsApp [13266: a0b] a == ноль
2014-01-31 10: 57: 11.179 MCDocsApp [13266: a0b] a == Ноль
2014-01-31 10: 57: 11.180 MCDocsApp [13266: a0b] Дело 2
2014-01-31 10: 57: 11.180 MCDocsApp [13266: a0b] a isEqual: [NSNull null]