【问题标题】:Unexpected number printed for CLLocation.coordinate.latitude为 CLLocation.coordinate.latitude 打印的意外数字
【发布时间】:2010-01-08 04:12:54
【问题描述】:

我的 -didUpdateToLocation 方法中有一个 NSLog 语句,它按预期打印我所在位置的纬度:

NSLog(@"%g", newLocation.coordinate.latitude);

打印37.3317

在相同的方法中,我将newLocation 分配给一个 CLLocation 实例变量,以便在其他地方使用。

self.selectedLocation = newLocation;

但是当我使用%g NSLog 时,我得到了这个值-1.96638e-202

NSLog(@"%g", self.selectedLocation.coordinate.latitude);

我做错了什么?

谢谢

【问题讨论】:

  • 你确定是NSLog("%g", self.selectedLocation.coordinate.latitude) 不是NSLog(@"%g", self.selectedLocation.coordinate.latitude)
  • 抱歉打错了-@"%g"

标签: iphone cocoa-touch cllocationmanager


【解决方案1】:

在.h 文件中,你有什么属性?

也就是说,你有这样一行:

@property (copy)CLLocation* newLocation;

括号里是什么?

【讨论】:

  • 属性是(非原子的,保留)
  • 好吧,我的猜测就这么多了。这似乎不太可能,但由于 didUpdateLocation 是异步的,因此可能会发生一些奇怪的事情。如果您将分配更改为 select.selectedLocation = [ [CLLocation alloc] initWithLatitude: newLocation.coordinate.latitude longitude: newLocation.coordinate.longitude] 我无法想象您为什么必须这样做
  • 添加了一个版本以消除潜在的泄漏
  • 那更奇怪了,我按照你的建议使用[[alloc]init...],当我在didUpdateToLocation中打印newLocation.coordinate.latitude时,它可以工作,然后我做作业,然后打印selectedLocation.coordinate.latitude,然后得到另一个奇怪的数字2.42797e-288,它与第一个奇怪的数字不同。这里发生了什么?纬度/经度是否需要特殊格式代码?谢谢。
  • 好的,对不起,我也搞砸了——当我在分配后打印时,值是正确的,37.3317。所以回到第一方,在 didUpdateToLocation 方法之外打印 self.selectedLocation.coordinate.latitude 会给出一个奇怪的数字。我是 Xcode 调试的新手,所以我有点迷茫 - 感谢您到目前为止的帮助。
【解决方案2】:

您是否在模拟器中对此进行测试?如果您是,它将始终返回纬度为“37.33”,经度为“-122.0”或附近是美国加利福尼亚州库比蒂诺(苹果总部)的位置。

如果不是这样,请向我们展示一些您的代码 sn-p。

希望我能帮到你。

谢谢,

马杜普

【讨论】:

  • 我知道 sim 总是返回 cupertino - 问题是我在打印出实例变量时看到的 e 幂的负值。谢谢。
猜你喜欢
  • 2011-01-03
  • 1970-01-01
  • 2012-01-27
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多