Что происходит в NSCFBoolean и NSNumber? - PullRequest
0 голосов
/ 23 ноября 2018

Хорошо, у меня есть NSDictionary, который содержит логическое значение.Он загружается с сервера и анализируется платформой, и по какой-то причине он в конечном итоге сохраняется как словарь NSCFBoolean (не спрашивайте, все, что я знаю, это то, что метод -class возвращает __NSCFBoolean).

Поскольку NSCFBoolean является частным фреймворком класса , который я не могу использовать напрямую, я делаю ссылку на него:

id myBool = myDict[@"my_bool"];

Теперь самое интересное: оценивать его.Я использовал точку останова и команду "po".Вот результаты:

> po myBool
0

> po [myBool class]
__NSCFBoolean

> po [myBool boolValue]
<nil>

Что за ..?

> po myBool == true
false

> po myBool == false
<nil>

мозг тает

Как это возможно, что == true возвращает false и == false возвращает nil ?

Имею многолетний опыт программированияObjective-C, но я никогда не видел такого странного поведения раньше!Я прочитал несколько статей о различиях между различными логическими типами, их поведением и причудами ( Эта статья на NSHipster довольно интересна), но я не читал ничего, что могло бы объяснить это поведение.

...