【问题标题】:Can I use an NSDecimalNumber anywhere that an NSNumber is expected?我可以在任何需要 NSNumber 的地方使用 NSDecimalNumber 吗?
【发布时间】:2010-03-14 04:06:46
【问题描述】:

NSDecimalNumber 是 NSNumber 的子类,据我所知,它实现了 NSNumber 实例预期的所有 NSNumber 方法。

鉴于此,是否可以将 NSDecimalNumbers 提供给任何需要 NSNumber 的代码?

唯一可能的问题可能是检查参数是否为 NSNumber 实例的代码,但由于 NSNumber 是一个类集群,因此此类代码必须检查该实例是否为 子类 NSNumber 和 NSDecimalNumber 实例应该通过相同的测试。

【问题讨论】:

    标签: objective-c cocoa cocoa-touch nsnumber nsdecimalnumber


    【解决方案1】:

    是的。

    唯一可能的问题可能是检查参数是否为 NSNumber 实例的代码,但由于 NSNumber 是一个类簇,这样的代码必须检查该实例是否为 NSNumber 的子类,并且 NSDecimalNumber 实例应该通过相同的测试。

    这就是isKindOfClass: 的用武之地,尽管您可能更愿意测试对象是否响应integerValue 之类的消息。

    【讨论】:

    • 在 Core Plot 框架中,我们有两个渲染路径,取决于提供的输入(NSNumbers 或 NSDecimalNumbers)的精度。为此,我们使用 [number isKindOfClass:[NSDecimalNumber class]] 来区分两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2022-11-15
    相关资源
    最近更新 更多