我有一个由app delegate创建的视图控制器 - 它是应用程序中显示的第一个视图控制器。
在其界面中我声明了
float lengthOfTime;
我还将其设置为属性:
@property (nonatomic) float lengthOfTime;
并在其实施中:
@synthesize lengthOfTime;
在类viewDidLoad方法中,我设置了值:
self.lengthOfTime = 3.0f;
然而,在此之后,该值始终为零。
没有错误,没有编译警告,没有。只有零。
该类被实例化,它在视图中显示,所以我很确定它不是一个零引用。
我在Google上搜索过,无法弄明白。
发生了什么事???
:(
答案 0 :(得分:0)
我认为该属性应该是原子的。只需将其声明为:
@property float lengthOfTime;
更新基元是一种原子操作。
我不确定这是否能解决您的问题。
“非原子”关键字用于防止多线程问题,其中一个线程在更改它的过程中被中断。如果需要执行多条指令,则只能中断操作。更新单个浮点值是单指令操作,因此不能被中断。
答案 1 :(得分:0)
在调用-viewDidLoad之前,您的视图可能正在读取值。我会尝试在初始化视图之前在一个名为的方法中设置变量,例如-awakeFromNib。
答案 2 :(得分:0)
我修好了,不知道我是怎么做到的。那是最糟糕的。现在我不知道怎么解决它再次发生。
我认为它没有被初始化,但我删除了它,它仍然可以工作。
我想我比以前更加沮丧。