Every time your locationManager:didUpdateLocations:
method is called, it creates a new DriveTrapViewController, which is destroyed as soon as the method finishes. Maybe you should use an ivar for this instead. That way it wouldn't be created and destroyed every time.
Also, both objects seem to be making instances of the other. Instead of a Core Location problem, this is a general architecture-type problem.
I'd suggest that at this stage you should just have a CLLocationManager
variable inside your DriveTrapController instead of trying to break it out into a controller of it's own.