【问题标题】:Changing value of a NSNumber更改 NSNumber 的值
【发布时间】:2009-07-01 22:34:00
【问题描述】:

有没有办法在创建 NSNumber 后更改其包含的值而不使其指向不同的 NSNumber?

NSNumber *num = [NSNumber numberWithInt:0]; num = [NSNumber numberWithInt: 1]; // 现在 num 指向另一个我不想要的对象。我希望它仍然是相同的对象,但价值不同。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    NSNumber 是不可变的。其实它是 NSValue 的子类,所有的 NSValue 都是不可变的。

    【讨论】:

    • 没有NSMutableNumber有点奇怪
    • 并非如此,通常当您想要一个“可变”数字时,您最终会使用原语。 NSNumber 对于序列化、作为字典键以及类似的东西更有用。
    • @MarcCharbonneau 肯定有时您希望数字是可变的。我刚刚遇到一个......最后只是将我的号码存储在一个 NSMutableString 中(我不会为了将一个可变整数存储在一个不可变的 NSDictionary 中而定义自己的类而烦恼)。
    【解决方案2】:

    不,您不能更改 NSNumber 的值。

    例如,请参阅this post。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多