Rename 'subActions' to 'children' to match Joystick property name. Simplify logic that deals with Joysticks-or-JSActions.
Clean up JoystickController. Modernize more Objective-C syntax. Remove direct public expose of mouseLoc ivar and use a property. Replace CFRunLoopTimer with a NSTimer and unschedule the timer when nothing needs to run.
Automatically trigger/untrigger targets based on setting the 'running' property; set it directly from action activity state. Add action/target magnitudes, usually zero, except for analog sticks.
JSAction base property should be eweak as it creates a circular reference with base.children.