NSNull равен NSNull
Является ли [[NSNull null] isEqual:[NSNull null]] == ДА?
Как правильно проверить, является ли идентификатор NSNull. Кроме того, если проверка двух коллекций на равенство и оба они содержат NSNull, будут ли они по-прежнему считаться равными?
1 ответ
Решение
Предполагая, что вы имели в виду:
[[NSNull null] isEqual:NSNull]
Нет, NSNull
это класс, а не объект. Вы не можете осмысленно сравнить это с [NSNull null]
, Вы всегда получите один и тот же объект от [NSNull null]
Впрочем, это - синглтон. Из документации:
+ (NSNull *)null
Возвращаемое значение
Единственный экземпляр NSNull.
Итак, это означает, что это выражение:
[NSNull null] == [NSNull null]
Всегда возвращается 1
, Точно так же:
[[NSNull null] isEqual:[NSNull null]]
Вернусь YES
,
Пример:
#include <Foundation/Foundation.h>
int main(void)
{
@autoreleasepool
{
NSLog(@"%d", [[NSNull null] isEqual:[NSNull null]]);
NSLog(@"%d", [NSNull null] == [NSNull null]);
}
return 0;
}
Строительство и запуск:
$ clang example.m -o example -framework Foundation
$ ./example
2013-08-30 14:56:21.200 example[27901:707] 1
2013-08-30 14:56:21.201 example[27901:707] 1