2012-06-05 70 views
2

我想接收位置更新。 我添加了一個位置代表對標題:didUpdateToLocation不叫

@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>

和以下功能:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //initialize location manager 
    CLLocationManager* locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    // [locationManager startMonitoringSignificantLocationChanges]; 
    [locationManager startUpdatingLocation]; 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController = [[ViewController alloc] initWithNibName:@"SomeViewController"  bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ 
    //Some problem 
} 
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation  *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    //Some action 
} 

但無論是didUpdateToLocation也不didFailWithError被稱爲(在模擬器上和設備上的相同的問題) 。我錯過了什麼?

由於提前,

旅大

回答

4

爲您的應用程序的位置服務啓用?

P.S:這將有助於使您的位置管理器成爲實例變量,以便在方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions完成後由ARC保留。

+0

這是ARC在進程中間發佈ur變量時的可能情況,因此沒有任何代表被調用。 – samfisher

+0

我想這就是我的意思是我的P.S. ;-) – Jake

+0

謝謝你們兩位! – Luda

0

我意識到這是一個necro,但我搜索了高和低的答案,並找不到解決方案,我的類似情況,這似乎是它的最佳位置。

我與,設置一些標誌然後運行[個體>的LocationManager startUpdatingLocation]定製初始化一個委託對象,並在一個viewDidLoad中調用它作爲這樣:

myLocationGetter* __unused getter = [[myLocationGetter alloc]initAndUpdateOnce; 

既不didUpdateToLocation也不didFailWithError被獲取調用。似乎ARC在回調通過之前忘記了我的getter對象。通過在視圖控制器中聲明getter作爲實例var並在viewDidLoad中初始化它來解決問題。