Используя NSNull

NSNull класс определяет одноэлементный объект, который Вы используете для представления нулевых значений в ситуациях где nil запрещается как значение (обычно в объекте коллекции, таком как массив или словарь).

NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = @[nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
// Output: "arrayWithNull: (<null>)"

Важно ценить что NSNull экземпляр семантически отличается от NO или false— они оба представляют логическое значение; NSNull экземпляр представляет отсутствие значения. NSNull экземпляр семантически эквивалентен nil, однако, также важно ценить, что это не равно nil. Для тестирования на значение несуществующего объекта необходимо поэтому сделать сравнение прямого дополнения.

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");
    }
}
// Output: "equals NSNull instance"