# applyAngularVelocity causes error when called right after object instantiation

I'm trying to make a physicsBody rotate as soon as it is instantiated.

CCNode* ball = [CCBReader load:@"Ball"]; [ball.physicsBody applyForce:force]; [ball.physicsBody applyAngularImpulse:arc4random_uniform(360) - 180]; 

Applying force works fine, the last line however throws an error in cpBody.c line 123: cpAssertHard(body->w == body->w && cpfabs(body->w) != INFINITY, "Body's angular velocity is invalid.");

When I don't apply force and merely rotate the problem persists. If I send applyAngularImpulse at some later point (in this case on a touch) it does work. Is this function not supposed to be called right after instantiation, or is this a bug?

-(void)applyAngularImpulse:(CGFloat)impulse { if (_body.moment == 0) _body.angularVelocity += impulse; else _body.angularVelocity += impulse/_body.moment; }
EDIT: This fix does however cause the object to go spinning wildly. In the didLoadFromCCB override I start a timer spawning these objects. Apparently, creating objects with physics while in this method doesn't end well. A proper workaround would be to call scheduleOnce with a delay of 0.1 on a function to apply the angular velocity properly.