【发布时间】:2010-09-20 09:02:46
【问题描述】:
我有一个属性声明如下:
@property(assign) BOOL die;
一个线程通过查看该变量是否已更改为 YES 来不断检查它是否应该死亡。当该模具设置为“是”时(通过用户单击按钮),正在磨掉的另一个线程仍将其视为“否”。我仔细跟踪了代码,发现变量肯定没有显示为已修改。这是怎么回事?
每个线程是否包含自己的变量缓存?在我的母语 Java 中,我会在其上设置“volatile”关键字以删除属性上的本地线程缓存。
这是你可以在 obj-c 中做的事情还是我走错了路?
【问题讨论】:
-
尝试发布访问变量的代码。
-
以及设置变量的位置。
-
持续检查的方法可能会被等待或通知所取代,具体取决于您正在执行的操作。我们需要代码。
-
此代码应该可以工作,因为默认情况下该属性是原子的。您访问它的方式有问题。
-
“@property (assign) volatile BOOL die;”怎么样!?
标签: iphone objective-c multithreading ipad thread-safety