0

我正在尝试创建一个多线程过渡动画系统,但对我用于同步的 NSCondition 对象中看似损坏的状态感到困惑。我在下面的调试器中添加了一些行来说明正在发生的事情:

po [NSThread currentThread]
<NSThread: 0x146f77a0>{name = Transition Animation, num = 4}

po _condition
<NSCondition: 0x1464dff0>{locked = YES, thread = 0xb083b000, name = nil}

p *(NSCondition*)_condition
(NSCondition) $5 = {
  NSObject = {
    isa = NSCondition
  }
_priv = 0x00000000
}

-lock令我困惑的是 condvar 的描述给出的地址和名称,因为它们与调用条件的 NSThread 的名称和地址不匹配。此外,检查 NSCondition 本身的实际内容也无济于事,因为它的_priv指针为 nil。有没有人有这方面的经验或知道如何解决?

PS 在人们建议我只使用 GCD 进行并发之前:我正在为我的动画使用 CADisplayLinks,所以我需要使用 NSThreads,因为 CADisplayLinks 需要一个 NSRunLoop 来触发更新。

4

0 回答 0