好,所以我有一个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编程的经验,但是我从未见过这种奇怪的行为!我已经阅读了几篇有关不同布尔类型及其行为和怪癖之间差异的文章(This article at NSHipster非常有趣),但我没有读过任何能解释这种行为的文章。