antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

Anton Dobkin
Author

Share


Tags


Класс NSNull

Anton DobkinAnton Dobkin

Класс NSNull представляет из себя контейнер для типа null и применяется для его размещения в коллекциях NSArray, NSDictonary, NSSet и др., которые не позволяют размещать nil/NULL значения в явном виде. Класс является синглтоном (Singleton) и принимает следующие протоколы:

Класс реализует единственный метод класса - null. Метод возвращает объект-синглтон класса NSNull.

NSArray *arrayWithNull = @[[NSNull null], @"Sting", @24 ];  
NSLog(@"%@", arrayWithNull);  
// Выводит: (
    "<null>",
    Sting,
    24
)

NSNull семантически эквивалентен nil, однако при этом не равен nil. Вы не можете использовать сравнение объекта NSNull со значением nil. Вместо этого необходимо использовать прямое сравнение объектов:

NSArray *arrayWithNull = @[[NSNull null], @"Sting", @24 ];  
id value = [arrayWithNull objectAtIndex:0];  
if (value == nil) {  
    NSLog(@"value == nil");
}
else if ([value isEqual:nil]) {  
    NSLog(@"isEqual:nil");
}
else if (value == [NSNull null]) {  
    NSLog(@"value == экземпляру NSNull");
}
// Выведет: "value == экземпляру NSNull"
Anton Dobkin
Author

Anton Dobkin

Comments