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、条件で呼び出している NSThread の名前とアドレスと一致しないため、condvar の説明で指定されたアドレスと名前です。さらに、NSCondition 自体の実際の内容を調べても、_privポインターが nil であるため役に立ちません。誰もこれを経験したことがありますか、それを修正する方法を知っていますか?

PS 同時実行に GCD を使用することを人々が提案する前に: 私はアニメーションに CADisplayLinks を使用しているため、更新をトリガーするには CADisplayLinks が NSRunLoop を必要とするため、NSThreads を使用する必要があります。

4

0 に答える 0