デバイスの動きに反応するアニメーションを作成したいのですが、UI スレッドが一時的にビジー状態になってもスムーズなアニメーションを維持したいと考えています。アニメーションは、CALayer のベジエ パスの変更で構成されます。セカンダリ スレッドから実行しようとしましたが、メイン スレッドのスタックが破棄されている場所でハングすることが時々あります。私がしていることは完全に絶望的ですか?スレッドで私がしていることは次のとおりです。
[CATransaction lock];
[CATransaction setValue:(id)kCFBooleanTrue
forKey:kCATransactionDisableActions];
[CATransaction begin];
myLayer.path = [UIBezierPath bezierPathWithOvalInRect:theRect].CGPath;
myLayer.bounds = theBounds;
[CATransaction commit];
[CATransaction flush];
[CATransaction setValue:(id)kCFBooleanFalse
forKey:kCATransactionDisableActions];
[CATransaction unlock];