title: CLLocationManager is not updating location
body: <p>This is related to my other <a href="https://stackoverflow.com/questions/9648948/ios-locationmanager-is-not-updating-location-titanium-appcelerator-module">question</a> but I am openning a new one with iOS tags only because it could be that the problem is on native side.</p>
  
  <p>Problem: location manager is not updating location. I tried reading <code>locationManager.location</code> and it always gives me one cached location.</p>
  
  <p>Then I modified the code to use <code>CLLocationManagerDelegate</code> and <code>-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {}</code>
   is never being called.</p>
  
  <p>my .h file:</p>
  
  <pre><code>#import "TiModule.h"
  #import &lt;CoreLocation/CoreLocation.h&gt;
  #import &lt;CoreMotion/CoreMotion.h&gt;
  
  @interface TiMovementModule : TiModule&lt;CLLocationManagerDelegate&gt; 
  
  @property (nonatomic, retain) CLLocationManager *locationManager;
  @property (nonatomic, readonly) NSDictionary *currentMovement;
  
  - (void)startMovementUpdates:(id)args;
  - (void)stopMovementUpdates:(id)args;
  
  @end
  </code></pre>
  
  <p>.m</p>
  
  <pre><code>/**
   * Your Copyright Here
   *
   * Appcelerator Titanium is Copyright (c) 2009-2010 by Appcelerator, Inc.
   * and licensed under the Apache Public License (version 2)
   */
  #import "TiMovementModule.h"
  #import "TiBase.h"
  #import "TiHost.h"
  #import "TiUtils.h"
  
  @interface  TiMovementModule ()
  
  @property (nonatomic, retain) CMMotionManager *motionManager;
  
  @end
  
  @implementation TiMovementModule
  
  @synthesize motionManager, locationManager;
  
  #pragma mark Internal
  
  // this is generated for your module, please do not change it
  -(id)moduleGUID
  {
      return @"3d2abdb6-bafb-451c-931d-a979dcc1ea78";
  }
  
  // this is generated for your module, please do not change it
  -(NSString*)moduleId
  {
      return @"ti.movement";
  }
  
  #pragma mark Lifecycle
  
  -(void)startup
  {
      // this method is called when the module is first loaded
      // you *must* call the superclass
      [super startup];
  
      self.locationManager = [[CLLocationManager alloc] init];
      self.locationManager.delegate = self;
      self.locationManager.distanceFilter = kCLDistanceFilterNone;
      self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
  
      motionManager = [[CMMotionManager alloc] init];
  
      NSLog(@"[INFO] %@ loaded",self); //this prints
  }
  
  -(void)shutdown:(id)sender
  {
      // this method is called when the module is being unloaded
      // typically this is during shutdown. make sure you don't do too
      // much processing here or the app will be quit forceably
  
      // you *must* call the superclass
      [super shutdown:sender];
  }
  
  #pragma mark Cleanup 
  
  -(void)dealloc
  {
      self.motionManager = nil;
      self.locationManager = nil;
  
      [super dealloc];
  }
  
  #pragma Public APIs
  
  -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
  
      NSLog(@"I AM HEREEEEEE!!!!!!!"); //this never prints
  
  }
  
  - (void)startMovementUpdates:(id)args
  {
      NSLog(@"[INFO] starting updates...");
  
      [self.locationManager startUpdatingLocation];
      [motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
      NSLog(@"[INFO] started updates."); //this prints
  }
  
  - (void)stopMovementUpdates:(id)args
  {
      [locationManager stopUpdatingLocation];
      [motionManager stopDeviceMotionUpdates];
  }
  
  - (id)currentMovement
  {
      NSDictionary *location = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithDouble:locationManager.location.coordinate.longitude], @"longitude",
                                [NSNumber numberWithDouble:locationManager.location.coordinate.latitude], @"latitude",
                                [NSNumber numberWithDouble:locationManager.location.altitude], @"altitude",
                                nil];
  
      NSDictionary *rotation = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithDouble:motionManager.deviceMotion.attitude.roll], @"roll",
                                [NSNumber numberWithDouble:motionManager.deviceMotion.attitude.pitch], @"pitch",
                                [NSNumber numberWithDouble:motionManager.deviceMotion.attitude.yaw], @"yaw",
                                nil];
  
  
      NSDictionary *movementData = [NSDictionary dictionaryWithObjectsAndKeys:
                                    location, @"location",
                                    rotation, @"rotation",
                                    nil];
      return movementData; // here I pull location and it always gives me cached location. 
  }
  
  @end
  </code></pre>