HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了{NSDecimalNumber integerValue}在iOS8中表现奇怪大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
OK团队,这很奇怪. [NSdecimalnumber IntegerValue]行为奇怪.

我坐在一个断点,试图弄清楚为什么我的应用程序的某些部分在iOS8中被破坏,我正在看一个名为“timeSeconds”的变量.在Xcode变量视图中看起来像这样

_timeSeconds    (NSdecimalnumber *) 344.514533996581994496

但是当我在调试器中查询时,我看到:

(lldb) p [self.timeSeconds doubleValue]
(doublE) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds IntegerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344

看到“-5”?任何一个美丽的人可以复制还是解释一下,在我提交雷达之前?

这是SSCCE:

NSdecimalnumber *n = [NSdecimalnumber decimalnumberWithString:@"344.514533996581994496"];
NSLog(@"%@",n); // 344.514533996581994496
NSLog(@"%ld",(long)[n intValue]); // 344
NSLog(@"%ld",(long)[n IntegerValue]); // -5
NSLog(@"%ld",(long)[n unsignedIntegerValue]); // 12

提前致谢!

马修

解决方法

IntegerValue的结果令人惊讶,但是从我所理解的文档中可以看出

NSdecimalnumber继承自NSnumber.在NSnumber的子类注释中,它表示
“…子类必须重写与声明类型相对应的访问器方法 – 例如,如果您的objCType实现返回”i“,则必须覆盖intValue …”

objCType设置为内部指针,因此它应该与NSnumber相同.

NSdecimal不会覆盖intergerValue.
它覆盖doubleValue,所以应该工作正常.

唯一让我奇怪的是:它似乎不会覆盖intValue …

大佬总结

以上是大佬教程为你收集整理的{NSDecimalNumber integerValue}在iOS8中表现奇怪全部内容,希望文章能够帮你解决{NSDecimalNumber integerValue}在iOS8中表现奇怪所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。