为什么我不能存储浮点值 - 它始终为零!

时间:2010-04-05 05:32:36

标签: iphone objective-c

我有一个由app delegate创建的视图控制器 - 它是应用程序中显示的第一个视图控制器。

在其界面中我声明了

float lengthOfTime;

我还将其设置为属性:

@property (nonatomic) float lengthOfTime;

并在其实施中:

@synthesize lengthOfTime;

在类viewDidLoad方法中,我设置了值:

self.lengthOfTime = 3.0f;

然而,在此之后,该值始终为零。

没有错误,没有编译警告,没有。只有零。

该类被实例化,它在视图中显示,所以我很确定它不是一个零引用。

我在Google上搜索过,无法弄明白。

发生了什么事???

:(

3 个答案:

答案 0 :(得分:0)

我认为该属性应该是原子的。只需将其声明为:

@property float lengthOfTime;

更新基元是一种原子操作。

我不确定这是否能解决您的问题。

“非原子”关键字用于防止多线程问题,其中一个线程在更改它的过程中被中断。如果需要执行多条指令,则只能中断操作。更新单个浮点值是单指令操作,因此不能被中断。

答案 1 :(得分:0)

在调用-viewDidLoad之前,您的视图可能正在读取值。我会尝试在初始化视图之前在一个名为的方法中设置变量,例如-awakeFromNib。

答案 2 :(得分:0)

我修好了,不知道我是怎么做到的。那是最糟糕的。现在我不知道怎么解决它再次发生。

我认为它没有被初始化,但我删除了它,它仍然可以工作。

我想我比以前更加沮丧。