locationServicesEnabled == YES,但[[CLLocationMagager alloc] init]返回nil

时间:2012-02-29 14:55:51

标签: objective-c ios cocoa-touch cllocationmanager

我有点不解。请考虑以下代码:

    if([CLLocationManager locationServicesEnabled])
    {
            if(self.locationManager == nil)
            {
                    self.locationManager = [[CLLocationManager alloc] init];
            }
            // do something with the location manager...
    }

self.locationManager设置为0x0。满足两种替代方案的条件。我使用self.locationManager = ...处的断点检查了这一点,并在应用程序的每次启动时调用该行。最有趣的是,同一视图控制器中的MKMapView能够显示用户的位置。

感谢您的任何见解, 克里斯

1 个答案:

答案 0 :(得分:1)

问题是locationManager声明为

    @property(weak, nonatomic) CLLocationManager* locationManager;

框架没有保留每个位置管理器实例,所以我应该声明

    @property(strong, nonatomic) CLLocationManager* locationManager;
相反,它完美无缺。

感谢LocoMike让我指向正确的方向。