我有一个声明如下的属性:
@property(assign) BOOL die;
一个线程通过查看该变量是否已更改为YES来持续检查是否应该死亡。当该模具设置为YES(通过用户单击按钮)时,正在磨掉的另一个线程仍将其视为NO。我在代码中加入了仔细的跟踪,看到变量肯定没有显示为修改过。这是怎么回事?
每个线程是否包含自己的变量缓存?在我的母语Java中,我会在其上设置'volatile'关键字以删除属性上的本地线程缓存。
这是你可以在obj-c中做的事情,还是我在错误的轨道上?
答案 0 :(得分:1)
不同的线程可能正在检查不同的实例。确保两个线程都访问该参数的同一副本
答案 1 :(得分:-3)
使用通知中心可能会更好,并且在更改时会通知侦听器。