Самое большое различие между ними: отправка сообщения объекту NSNULL
, вероятно, вызовет сбой, в то время как любое сообщение отправлять на nil
здорово.Например, если вы используете путь к ключу для получения массива, например:
NSArray *departmentNames = [departments valueForKey:@"name"];
Тогда у вас будет объект NSNULL
для любого отдела, чье name
равно nil
.Таким образом, это вызовет сбой:
for (NSString *name in departmentNames)
NSLog(@"%@", [name lowercaseString]);
всякий раз, когда name
равен NSNull
, потому что вы только что отправили неизвестный селектор (lowercaseString
) на NSNull
.
Урок: проверка на наличие объекта NSNull
в массиве перед отправкой любого сообщения его элементам.
for (NSString *name in departmentNames)
if (name != [NSNull null])
NSLog(@"%@", [name lowercaseString]);