0

我正在按照本教程创建一个显示用户位置的程序。我已经告诉 Xcode 为我模拟一个位置,甚至在模拟器上确保它允许我的应用程序跟踪位置。但是,没有任何内容记录到我的控制台。

头文件:

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface WhereamiViewController : UIViewController <CLLocationManagerDelegate> {
    CLLocationManager *locationManager;
}

@end

和主文件:

#import "WhereamiViewController.h"

@implementation WhereamiViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        locationManager = [[CLLocationManager alloc] init];
        [locationManager setDelegate:self];
        [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
        [locationManager setPausesLocationUpdatesAutomatically:NO];
        [locationManager startUpdatingLocation];
    }

    return self;
}

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations
{
    NSLog(@"%@", [locations lastObject]);
}

- (void)locationManager:(CLLocationManager *)manager
    didFailWithError:(NSError *)error
{
    NSLog(@"Error: %@", error);
}

@end
4

1 回答 1

1

我不是 100% 确定答案,但这就是我所得到的。
iOS 7 仅在应用程序处于前台时才允许获取位置。当您在 中编写代码时initwithNibName,您的应用实际上并不在前台,它正在从 xib 文件和所有内容创建控件。这就是操作系统不为您提供位置更新的原因。

于 2013-11-28T12:20:52.753 回答