为什么这两个“自动装箱”语句给出不同的结果?

杜塞尔

看下面的内容,为什么即使b_obj是c_obj也不属于__NSCFBoolean类?b和c之间的唯一区别是取反运算符。一世

BOOL a = ![[NSNumber numberWithInt:1] boolValue];
id a_obj = @(a);
NSLog(@"a_obj class: %@", [a_obj class]); // class is __NSCFBoolean

// This one behaves the same as a
id b_obj = @([[NSNumber numberWithInt:1] boolValue]);
NSLog(@"b_obj class: %@", [b_obj class]); // class is __NSCFBoolean

// But not this one, even though it is pretty much the same
id c_obj = @(![[NSNumber numberWithInt:1] boolValue]);
NSLog(@"c_obj class: %@", [c_obj class]); // class is __NSCFNumber ?!?

提前致谢!

编辑 :

如果我强制转换为BOOL,则可以解决此问题。

// A cast "fixes" it
id d_obj = @((BOOL)![[NSNumber numberWithInt:1] boolValue]);
NSLog(@"d_obj class: %@", [d_obj class]); // class is __NSCFBoolean
肯·托马斯(Ken Thomases)

逻辑否定运算符(!)的类型int在(Objective-)C中。由于与的类型不同BOOL,因此编译器对它的包装不同也就不足为奇了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这两个代码给出的结果相同?

来自分类Dev

为什么这两个golang整数转换函数给出不同的结果?

来自分类Dev

为什么这两个代码段给出不同的结果

来自分类Dev

为什么这两个C#脚本给出不同的结果?

来自分类Dev

为什么这两个find命令给出不同的结果?

来自分类Dev

为什么这两个日期命令给出不同的结果?

来自分类Dev

为什么这两个代码给出不同的输出

来自分类Dev

为什么这两个“ cat”命令的结果不同?

来自分类Dev

为什么这两个函数的结果不同?

来自分类Dev

Javascript OOP-为什么这两个几乎完全相同的语句给出不同的输出?

来自分类Dev

为什么两个sql给出不同的结果?

来自分类Dev

这两个SQL查询在什么条件下会给出不同的结果?

来自分类Dev

这两个SQL查询在什么条件下会给出不同的结果?

来自分类Dev

为什么这两个版本的高阶函数没有给出相同的结果?

来自分类Dev

为什么两个语句导致不同的结果?

来自分类Dev

R:为什么对于相同的点,来自两个不同软件的这两个不同的结果(拟合曲线)?

来自分类Dev

xUnit.net:为什么这两个等效测试会有不同的结果?

来自分类Dev

为什么这两个python函数返回不同的结果?

来自分类Dev

为什么这两个python正则表达式产生不同的结果?

来自分类Dev

du -sh:我不明白为什么这两个结果不同

来自分类Dev

xUnit.net:为什么这两个等效测试会有不同的结果?

来自分类Dev

是什么让这两个查询返回不同的结果?

来自分类Dev

这两个结果有什么不同?

来自分类Dev

JavaScript日期:为什么这两个日期不同?

来自分类Dev

为什么这两个DOMDocument函数的行为不同?

来自分类Dev

为什么这两个FParsec片段不同?

来自分类Dev

为什么这两个警报显示不同的值?

来自分类Dev

为什么这两个 DateTime 实例不同?

来自分类Dev

为什么这两个模板函数的输出不同?

Related 相关文章

  1. 1

    为什么这两个代码给出的结果相同?

  2. 2

    为什么这两个golang整数转换函数给出不同的结果?

  3. 3

    为什么这两个代码段给出不同的结果

  4. 4

    为什么这两个C#脚本给出不同的结果?

  5. 5

    为什么这两个find命令给出不同的结果?

  6. 6

    为什么这两个日期命令给出不同的结果?

  7. 7

    为什么这两个代码给出不同的输出

  8. 8

    为什么这两个“ cat”命令的结果不同?

  9. 9

    为什么这两个函数的结果不同?

  10. 10

    Javascript OOP-为什么这两个几乎完全相同的语句给出不同的输出?

  11. 11

    为什么两个sql给出不同的结果?

  12. 12

    这两个SQL查询在什么条件下会给出不同的结果?

  13. 13

    这两个SQL查询在什么条件下会给出不同的结果?

  14. 14

    为什么这两个版本的高阶函数没有给出相同的结果?

  15. 15

    为什么两个语句导致不同的结果?

  16. 16

    R:为什么对于相同的点,来自两个不同软件的这两个不同的结果(拟合曲线)?

  17. 17

    xUnit.net:为什么这两个等效测试会有不同的结果?

  18. 18

    为什么这两个python函数返回不同的结果?

  19. 19

    为什么这两个python正则表达式产生不同的结果?

  20. 20

    du -sh:我不明白为什么这两个结果不同

  21. 21

    xUnit.net:为什么这两个等效测试会有不同的结果?

  22. 22

    是什么让这两个查询返回不同的结果?

  23. 23

    这两个结果有什么不同?

  24. 24

    JavaScript日期:为什么这两个日期不同?

  25. 25

    为什么这两个DOMDocument函数的行为不同?

  26. 26

    为什么这两个FParsec片段不同?

  27. 27

    为什么这两个警报显示不同的值?

  28. 28

    为什么这两个 DateTime 实例不同?

  29. 29

    为什么这两个模板函数的输出不同?

热门标签

归档