通过分配新的NSNumber来更改NSNumber值?

时间:2010-03-23 21:19:14

标签: iphone iphone-sdk-3.0 immutability nsnumber

我知道NSNumber是不可变的,但我仍然需要在我的应用程序中更改它。我使用它是因为它是一个对象,因此可以与@property一起使用(如果可以的话,我会在心跳中使用float或CGFloat,但遗憾的是,我不能)。

有没有办法只覆盖旧的NSNumber实例?我正在尝试这个:

NSNumber *zero = [[NSNumber alloc] initWithFloat:0.0];
myNSNumber = zero

但这不会改变价值。这是我的代码的简化版本,因为我正在更改根视图控制器的参数(我知道,不是MVC友好的)。不过,价值的变化应该是同一个任务,对吧?我应该先发布myNSNumber吗?我应该为myNSNumber设置@property?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用numberWithDouble:numberWithInteger:等便捷方法获取NSNumber的自动释放实例。无需调用alloc / init,尤其是当您使用retain说明符分配属性时(这些属性在分配时自动保留/释放)。

答案 1 :(得分:0)

((myViewController*)self.parentViewController).otherViewController.value

心理调试告诉我,这个属性链中的一个对象是零。我的钱在parentViewController上,因为我经常忘记设置父属性。