iOS CLLocation 属性不保留值

Posted

技术标签:

【中文标题】iOS CLLocation 属性不保留值【英文标题】:iOS CLLocation property doesn't retain value 【发布时间】:2014-01-20 00:37:08 【问题描述】:

我正在尝试将 self.mapView.userLocation.location 保存在内存中 CLLocation 属性中,但是在我将值分配给该属性并检查该属性的值后,我得到了这个:

<+0.00000000,+0.00000000> +/- 0.00m (speed -1.00 mps / course -1.00) @ 1/19/14 4:21:14

这是我的代码:

.h:

@property (retain, nonatomic) CLLocation *currentlocation;

在我的.m上

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    if (self.currentlocation != self.mapView.userLocation.location)
    
       self.currentlocation = self.mapView.userLocation.location;
    


我的问题是谁能保留 self.currentlocation 上 self.mapView.userLocation.location 的值并将其保留在内存中?

非常感谢您的帮助。

【问题讨论】:

你把mapView的showUserLocation设置为true了吗? 是的,self.mapView.showsUserLocation = YES; 【参考方案1】:

您正在将一个指针分配给另一个指针。因此,您实际上只是存储了对 MKUserLocation 位置的引用。

听起来您当时想存储该值,而不希望它改变。如果是这样:

 self.currentLocation = [self.mapView.userLocation.location copy];

保存一份副本应该可以得到你想要的。

【讨论】:

以上是关于iOS CLLocation 属性不保留值的主要内容,如果未能解决你的问题,请参考以下文章

CLLocation 类的课程值一直为 -1。为啥?

CLLocation高度属性在飞行中的有效性

ViewModel 中的链可观察对象用于获取但保留为独立属性

iOS - CLLocation Manager didUpdateLocations 在一个类中被调用,而不是在另一个类中?

CLLocation 区域监控在 iOS 5.1 和 iOS 6 中的行为不同

Xcode 属性不保留值