Iphone 是否通过分配新的NSNumber更改NSNumber值?

Iphone 是否通过分配新的NSNumber更改NSNumber值?,iphone,iphone-sdk-3.0,immutability,nsnumber,Iphone,Iphone Sdk 3.0,Immutability,Nsnumber,我知道NSNumber是不可变的,但我仍然需要在我的应用程序中更改它。我之所以使用它,是因为它是一个对象,因此可以与@property一起使用(如果可以,我会在心跳中使用float或CGFloat,但遗憾的是,我不能) 有没有办法只覆盖旧的NSNumber实例?我正在尝试这个: NSNumber *zero = [[NSNumber alloc] initWithFloat:0.0]; myNSNumber = zero 但这不会改变值。这是我的代码的简化版本,因为我正在更改根视图控制器的参数

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

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

NSNumber *zero = [[NSNumber alloc] initWithFloat:0.0];
myNSNumber = zero
但这不会改变值。这是我的代码的简化版本,因为我正在更改根视图控制器的参数(我知道,不是MVC友好的)。不过,值的变化应该是相同的赋值,对吗?我应该先发布我的手机号码吗?我应该为myNSNumber设置@property在什么位置


谢谢

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

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


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

您可以在
@property
声明中使用基元类型。e、 g.
@属性(非原子,赋值)浮点fooNSNumber
属性。您能否在最近的示例中确认
value
属性是一种值类型(如CGFloat、double等)使用
assign
说明符?您是
@synthesis
调用所有这些属性还是自己编写它们的访问器和变异器?value属性是一个float,我正在使用@property(readwrite,assign)说明符。我正在合成属性。下面是我刚才玩的:((myViewController*)self.parentViewController.otherViewController.value=1.0;assert((myViewController*)self.parentViewController.otherViewController.value==1.0);此语句失败。我真的很困惑为什么会发生这种情况。(还有,我如何激活那些光滑的小高亮代码块?)非常感谢您的帮助!我想我们需要查看您的所有代码才能进一步了解这一点。我刚刚运行了一些快速测试,我真的不明白为什么断言会失败,除非属性声明有问题。不过,作为风格问题,测试浮点值之间的相等性是一个坏主意,因为它们可能不同由于四舍五入错误和机器精度的原因,请使用反勾号执行类似于此的
内联格式设置(有关帮助,请参阅《格式指南》)。